第三章:运算符
1.算术运算符(+,-,*,%,/,++,–)
第一个算式中,我的j先自增1变成9,然后将9赋给k
第二个算式中,我们先将j的值8赋给k,然后j自己再增加1变成9
2.关系(比较)运算符(==,!=,<,>,<=,>=)
3.逻辑运算符(&,|,&&,||,!,^)
短路的意思就是惰性运算,当符号左边的式子已经可以确认最后结果时,符号右边的式子就不进行计算了。
短路与是Java语言中的一个逻辑运算符,记作&&,与编程语言中的与(&)相似,但是具有短路性质:在使用&进行运算时,不论左边为true或者false,右边的表达式都会进行运算,而如果使用&&进行运算,当左边为false时,右边的表达式不会进行运算,因此&&被称为短路与。
短路或是Java语言中的一个逻辑运算符,记作||,与编程语言中的或(|)相似,但是具有短路性质:在使用|进行运算时,不论左边为true或者false,右边的表达式都会进行运算,而如果使用||进行运算,当左边为true时,右边的表达式不会进行运算,因此||被称为短路或。
此处说明我们的++b并没有得到执行
此处说明我们的++b得到执行
将true赋值给y,则z++==46与y=true都为真
4.赋值运算符(=,+=,-=,/=等)
在进行复合类型的运算时,会进行强制转换
比如:byte b = 3;
b += 2;等价于b=b+2,b+2经过运算为int型,赋值给byte型的b,按道理应该报错,但没有报错,因为b+=2实质等价于b=(byte)(b+2)。
b=b+2;如果我们直接这样写会报错。
b++;我们同样可以理解为b=(byte)(b+1)
5.三元运算符(? , :)
6.运算符优先级
7.标识符命名规则和规范(关键字,保留字)
下图中AssignOperator就是一个类名
下图中stuName就是一个变量名
8.键盘输入语句
System.in代表从键盘输入
9.四种进制的介绍
1. 2进制转10进制
2. 8进制转10进制
3. 16进制转10进制
4. 10进制转2进制
一个字节有8位,但转完之后只有6位为100010,所以前面还要加2位,所以最后的结果为00100010,再在前面加0b或者0B表示二进制,故结果为0B00100010
5. 10进制转8进制
6. 10进制转16进制
7. 2进制转8进制
在每三位中进行二进制转十进制
8. 2进制转16进制
每四位中进行二转十
9. 8进制转2进制
本来结果是0b010011111,因为二进制是8位,所以多余的那个0被去掉了
10. 16进制转2进制
10.位运算的思考题
11. 原码,反码,补码
十进制数据的二进制表现形式就是原码,原码最左边的一个数字就是符号位,0为正,1为负。
最高位就是最左边的那个位代表符号位
12.位运算符(按位与&,按位或|,按位异或^,按位取反~,>>,<<,>>>)
按位与:10010001与10110010的结果为10010000,如下图所示
先要得到补码的原因是计算机再进行运算时,不管是什么运算(加减乘除),都是以补码的形式进行运算。
正数三码合一,原码反码补码都一样,
2&3的结果便是2
负数的补码是反码+1,第3步中,二进制加一,需要借位。
低位就是右边的位,高位就是左边的位。
Int a = 1 >> 2
就是
00000000 00000000 00000000 00000001=》00000000 00000000 00000000 00000000(01)
本质就是1/2/2=0就是向左边移动一位就是除个2,再移一位就是在除一个2
这里移动的时候除了符号位,所有都要移动
Int a = 1 << 2
就是
00000000 00000000 00000000 00000001=》00000000 00000000 00000000 00000100
本质就是122=4就是向右边移动一位就是乘个2,再移一位就是再乘一个2
(A)中要用包装类进行转换
(B)中3后面加了一个d代表是一个double类型
(F)中经过b+2的运算就变为int型
byte,short,char不管是出现单独运算还是混合运算,它们的精度都会变成int
字符串要可以转换成double类型,比如“hello”就不行