JAVA运算符包括 算术运算符,赋值运算符,关系运算符,逻辑运算符,位运算符,三目运算符 一:算术运算符: +,-,*,/,%,++,--
+ 加法运算 - 减法运算
* 乘法运算
/ 整除运算,只获取整数部分
% 取余运算
++:自加1 当++在前的时候,先自加1,再做赋值 *** 作,当++在后的时候,先做赋值 *** 作,再做自加1 --:自减1 当--在前的时候,先自减1,再做赋值 *** 作,当--在后的时候,先做赋值 *** 作,再做自减1
二:赋值运算符: = , +=, -=, *=, /=, %= 其中我们一直在使用的也是最常用的:= += int a += 10; int a = 10; a += 20;
这里实际上可以看作为a的值加上了一个20再赋值给a,但是不能完全等于 a = a + 20; 为什么不能完全等于,例题。 short s=1, s = s+1; short s=1, s += 1; 上面两个代码有没有问题,如果有,那里有问题 第一个有问题,因为变量参与运算,首先会提升数据类型,然后做运算。所以 s = s+1;s会提升到int类型然后再做加法运算,最终的结果是int类型,所以拿short类型接收会报错,所以要想成功赋值,就得强制类型转换。 第二个代码没有问题,是因为内部自动包含了强制类型转换,s+=1 ===> s = (s的数据类型)(s+1)其余的赋值运算符同理,都是通过与自身进行加减乘除运算,再将值赋给自身。
三:关系运算符: ==,!=,>,<,>=,<= 注意事项: 1、关系运算符的表达式的结果是一个boolean类型,要么是true,要么是false 2、==不能少写,一个=是赋值运算符,==才是关系运算符 3、赋值的时候要注意类型问题,关系运算符表达式的结果是boolean类型,所以接收的时候只能是boolean类型的变量接收
四:
逻辑运算符: &,|,^,!,&&,||
逻辑运算符的两边放的是boolean类型的值,计算的结果也是一个boolean类型的值 &: 参与运算的时候,两边有false,则false,两边都做运算,即只有当两边都为ture时,才为ture。 |: 参与运算的时候,两边有true,则true,两边都做运算,即只有当两边都为ture时,才为ture。 ^: 参与运算的时候,相同为false,不同为true,两边都做运算,即两边同为ture,或同为false,则为false,若一边为ture,一边为false,则为ture。 !: 将true变成false,false变成true. &&: 短路与,结果和单个 & 结果一样,有false则false,但是执行的东西不一样, 当&&左边的表达式结果为false的时候,结果是false,右边不执行 ||: 短路或,结果和单个 | 结果一样,有true则true,但是执行的东西不一样, 当||左边是true的时候,右边不执行,结果是true.
五:位运算符: <<,>>,>>>,&,|,^,~
位运算符: <<: 左移,二进制左移,右边用0补齐,多出来的丢弃 >>: 右移,最左边最高位是0用0补齐,最高位是1就用1补齐,多出来的丢弃。 >>>: 无符号右移,无论左边最高是0还是1,都用0补齐,多出来的丢弃。
注意,移动的是其二进制补码,不是其二进制源码;
&,|,^,~
例用3和4作比较
3的源码为00000011
4的源码为00000100
因为3,4为正数,所以其源码反码补码相同。
&,|,^,~:运算比较用补码作比较。
& 运算:有0则0 00000011 & 00000100 --------------- 00000000 结果是 : 0 | 运算:有1则1 00000011 | 00000100 -------------- 00000111 结果是:7 ^ 运算:相同则0,不同则1 00000011 ^ 00000100 -------------- 00000111 结果是:7 ~ 运算:1变成0,0变成1 00000011 ~ ------------- 补码: 11111100 已知补码求原码: 反码: 11111011 原码: 10000100 结果是:-4
六:三目运算符:又称之为三元运算符 格式:(关系表达式)?表达式1:表达式2; 如果关系表达式的结果为true,运算后的结果是表达式1; 如果关系表达式的结果为false,运算后的结果是表达式2; 注意事项: 1、三目运算符表达式的结果数据类型由三目运算符表达式1和表达式2中最大的数据类型决定的。 2、关系表达式一定只能是boolean类型
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)