栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

何先振第5期:Java基本语法之运算符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

何先振第5期:Java基本语法之运算符

      大家好,我叫何先振,今天给大家讲解下Java的语法和运算符。

1.算术运算符

     可分为:正号+、负号-、加+、减-、乘*、除/、取模%、前++、后++、前--、后--、连接符+。

     除号/,要特别注意,我们定义了int类型的变量相除,得到的也是整数,这时候会出现丢失小数。如果要想保留,需要转成double相除。比如:丢失小数,int除以int类型会是int类型。

     不丢失小数,有两种方式:

     方式一:num2+0.0自动转换成了double类型,double类型跟num1相除,得到也是double类型。因此没有损失小数,这是上讲说的自动类型提升。

     方式二:num1直接转成double类型,跟num2相除,最后自动转型成double类型,也没有损失小数。两种方式都可以。

     % 取余数运算,取余结果时,被除数为正,余数为正,被除数为负,余数为负。开发中经常会用来判断是否可以被除尽的情况。

     前++、后++,的区别是:前++:先自增1,后运算。后++:先运算,后自增1。

     如图:num5++ 先赋值给了num6,在自增,因此num6是12,num5是13。++num4是先自增,再赋值。因此num4是13,后面赋值给num7也是13。

     注意点:之前说过,byte、short、char运算,都需要整数int类型接收,但是这种方式自增1时,是不会改变变量的类型的。

     由于127是byte正数最大范围,+1的话,位最高位从0变成1,最高位代表的是正负,所以变成了-128。这可以说明这种自增方式,不会改变变量类型。

前--、后--的区别:前--:先减1,后运算。后--:先运算,后减1。以上跟上面加法效果一样,区别只不过是这里做减法,减1。

2.赋值运算符

     符号:=,将等号右边的值,赋给左边的变量。可以支持连续赋值:

     两个变量,共用一个类型,连续赋值。

     赋值运算的扩展:+=、-=、*=、/=、%=表示,在本身的变量上的值,+一个数,-一个数,*一个数,/一个数,%取余赋值给自己。本身值为19,加上2位,为21,如图:

     本身为21,除以5,取余为1,将余数赋值给变量自身。如图:

     注意:这种赋值也不会改变变量类型。

3.比较运算符(关系运算符)

     比较运算符的结果,都是布尔类型的值,要么是true,要么是false。

     可分为:==相等于、!=不等于、<小于、>大于、<=小于等于、>=大于等于、instanceof(这个后面会讲)。如图:2和13,==号比较不相等,返回false,12小于或者等于13,返回true。

4.逻辑运算符

     逻辑运算符可以分为:& 逻辑与运算符、|逻辑或运算符、!逻辑非运算符、&&短路与运算符、||短路或运算符、^逻辑异或运算符。

     逻辑运算符,都是跟布尔类型的变量做运算。逻辑运算符的结果,都是布尔类型的值,要么是true,要么是false。如下:

&&和&当两个都为true的时候才为true,有一个为false,都为false。

||和|当两个有一个为true时就为true,都是false时才为false。

!a,a为false时,非a就为true,a为true时,非a就为false。

a^b,异或两个相同时为false,不同时为true。

     (1)短路与&&和逻辑与&的区别:短路与做逻辑运算时,发现一个能够决定整个的逻辑结果时,就不会运算第二个。逻辑与还会继续运算第二个。比如 a1=false 、b1=true。a1 && b1时,a1为false我就知道整个必为false,所以没必要在运行下去,直接终止。

     a1&b1时,a1为false,不死心,还会继续运行b1,直到把两个都运行完,才结束。因此图中,num10在短路与中没有自增,因为根本就没运行这段代码。

     相同点结果相同,当符号左边是true都会执行右边的运算。

     不同点,当符号左边是false时短路与不会执行右边的运行,逻辑与会继续执行右边的运算。

     (2)短路或||和逻辑或|的区别:跟短路与和逻辑与相似,短路或做逻辑运算时,发现一个能够决定整个的逻辑结果时,就不会运算第二个。逻辑或还会继续运算第二个。比如 a1=true、b1=false。a1 || b1时,a1为true我就知道整个必为true,所以没必要在运行下去,直接终止。a1|b1时,a1为true,不死心,还会继续运行b1,直到把两个都运行完,才结束。

相同点结果相同,当符号左边是false都会执行右边的运算。

不同点,当符号左边是true时短路或不会执行右边的运行,逻辑或会继续执行右边的运算。

     开发中,推荐使用短路或跟与。因为他能够减少不必要的运行。

5.位运算符

     位运算符操作的都是整形型的变量。在一定范围内,<<左移,每移动一位,相当于乘以2。<<左移,表示十进制的数,换算成二进制,字节位中集体移动多少位。移动多出来右边的部分用0补位,比如2<<2,0000 0010变成了0000 1000 变成了8。如果a<>右移,在一定范围内,每次向右移动一位,相当于除以2,移动左边多出来的部分,看最高位是1还是0,如果是1负数用1补,如果是0正数,用0补。>>>无符号右移,就是左边多出来的部分,不管是正数0还是1,都用0补。

     如图:22左移动2为,22*4=88,22右移动1为,22/2=11

     &与运算,两个数的二进制比较,0代表false,1代表true,只要有一个false,就为0。2:0000 0010 ,6:0000 0110 比较得到:0000 0010 还是2,如图:

     |或运算,两个数的二进制比较,0代表false,1代表true,只要有一个true,就为1。2:0000 0010 ,6:0000 0110 比较得到:0000 0110 还是6。如图:

     ^异或运算,两个数的二进制比较,0代表false,1代表true,只要两个不一样,就为true。2:0000 0010 ,6:0000 0110 比较得到:0000 0100 就为4,如图:

     ~取反运算,就是二进制位值取反,1变0,0变1。2:0000 0010 ,取反:~2:1111,1101 变为-3 就是反码。

     这里要区分这些符号,跟逻辑运算符很像,逻辑运算符比较的是boolean类型的。如果看到是整数类型的这些符号就是做位运算。

6.三元运算符

     (条件表达式)?表达式1:表达式2 :如果条件表达式为true的话就执行表达式1,如果是false的话就执行表达式2,执行的结果可以用统一的类型去接收。

     三元运算符可以嵌套使用,如图:

     下讲我们会讲到流程控制语句,凡是可以写成三元运算符的,都可以写成if-else控制语句。

     凡是可以写成if-else控制语句,不一定都能写成三元运算符。如果都可以写成,推荐优先使用三元运算符,因为代码效率高。

7.运算符的优先级

     如果想让运算符优先运行,就直接加(),都会先运行括号里面的。具体优先级,可参考这个表格:

     以上就是今天的内容介绍,下期我们来讲Java基础语法之流程控制,欢迎长期关注学习更多Java知识。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344806.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号