Java运算符
来源:互联网 发布:matlab 数据拟合 编辑:程序博客网 时间:2024/06/16 04:22
Java运算符 :算术运算符,赋值运算符 ,关系运算符,逻辑运算符,移位运算符,位运算符,三目运算符等
算术运算符:+ - * / % ++ --
除号运算 / :除数不为零, % 取余:与符号位无关,
a++与++a的区别?先赋值后加1,先加1后赋值
思考?a=1; a+=a++; 为多少? a+=++a; 为多少?
a+=a++;即a=a+a++; 根据a++先赋值后加1, 最终a=2
a+=++a;即a=a+++a; 根据++a先加后赋值, 最终a=3
根据反编译(这里并未贴出反编译代码,自己可以去尝试,java -c -l 加上class文件),可以看出a=a+a++, a虽然加了1,但此时a 被赋值2;所以结果为2
赋值运算符:= += -= *= /= %= <<= >>= &= ^= |=
复合赋值运算不会改变结果的类型,所以在有些时候运算在逻辑上会出现错误,但是符合计算中数值的表述。例如:
byte b = 127;b += 1;System.out.println(b);
根据前面的介绍,byte类型的取值区间是-128~127,由于复合赋值运算符不改变结果的类型,则导致结果是-128,而不是128.原因如下byte类型值127的机器数是01111111,0表示正数,后续的数值表示127该数值加1后,得到的数值是10000000,二进制加法而10000000在byte类型中恰好是-128的机器数表示形式其它类型的符合运算符也可能存在类似的情况,使用时需要注意。
byte b = 127;b = b+1;System.out.println(b);//此时报错 b+1此时默认是int型,即推出默认类型,int型和浮点double型。
关系运算符:== != > < >= <=
逻辑运算符:&& || !
&&与||使用注意:&&若前面的条件为false,则后面就不执行了,||若前面的条件为true,则后面就不执行了,这与接下来的位运算,& |不同。
移位运算符:>> << 无符号右位移>>>
位运算符:& | ^(异或即不同的时候才为1) ~ (取非)
原码,反码,补码?
正数的原码,反码,补码一样;
负数的反码是在原码基础上,符号位不变,其他取反;
负数的补码是在原码基础上,符号位不变,其他取反加 1.
注意:运算时使用的都是补码,运算后若为符号位为1要重新变为 原码,即结果。
三目运算符:? :
对于条件表达式
b?x:y
,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值 0 0
- Java运算赋值运算符
- Java| Java 运算符
- Java位运算符
- java运算符
- java中的“%”运算符
- Java 位运算符
- Java 位运算符
- Java 位运算符
- Java 位运算符
- java 运算符优先级
- Java 位运算符
- java 运算符
- JAVA入门:运算符
- JAVA 运算符 >> >>> <<
- JAVA移位运算符
- Java 位运算符
- JAVA移位运算符
- java 运算符
- Android6.0以上版本打电话获取权限
- ABI 应用程序二进制接口
- C语言中的操作符(详)
- 运算符 优先级 结合性 用法 解释
- pycharm开发python时出现控制台显示中文乱码
- Java运算符
- Floor problem
- [BZOJ2301][HAOI2011]Problem b(莫比乌斯反演)
- unittet skip 测试用例
- 关于JS中作用域的一些理解
- 【C语言】操作符
- phoenix-plugin项目开源
- 安装Hadoop及Spark(Ubuntu 16.04)
- Angular 2的管道Pipe