首页 > 编程语言 > 详细

JAVA运算符

时间:2020-04-07 23:59:58      阅读:112      评论:0      收藏:0      [点我收藏+]

一、关系运算符

+  -   *  /  %  ++  --

理解:x++,++x。两者都是自增1,区别在于如果存在赋值情况,前者是先赋值,在自增,后者是先自增,在赋值。

举例:

int x = 1;
y = x++;
system.out.print(y"+" x);
y=? x= ?
答案:y = 1, x = 2

z = ++x;
system.out.print(y"+" x);
z = ? x = ?
答案:z = 2,x = 2


或者:
int x = 1;
x = x++;
x = ?
答案:x = 1。
为什么?
开辟空间x,存入常量1,赋值运算时,会先把值拿出来做副本,最后在把这个值赋回去。
x = ++x;
x = ?
答案:x = 3。

二、比较运算符

>  <  ==  !=    instanceof类

三、赋值运算符

=  +=   

举例:
byte x = 1;
x = x + 2;
会有什么问题???
编译错误,需要强制转换。将一个32位整型赋值给8位的数据类型需强制转换。
应该是:x = (byte)x + 2;

x+=2;
不会出问题。+=会自动提升位数。将8位自动提升为32位。

四、逻辑运算符

&  |  ^逻辑异或  &&短路与  ||短路或

^理解:两边结果不一样,就为true。

五、位运算符

& 按位与    | 按位或     ^按位异或,    <<按左位移,   >>按右位移。   >>>按位右移(无符号)  ~ 反码

理解:基于二进制进行运算的。计算机中的整数或者负数,都是以补码的形式存储的,反码是一种表现形式。

原码:转换为二进制。  反码:按位取反。  补码:得到的反码+1。

位移:

6<<2,向左移动2位,后面补0。值为6*2的移动位次幂6 *2的2次方,即6*4=24,这是结果。

8>>1,向右移动2位,前面补0。值为8/2的位移次幂,即8/2的2次方,即8/2 = 4,这是结果。这里有符号的需要保留符号。

-6>>>1,这里右移,不需要保留符号,前面补充0。

 

JAVA运算符

原文:https://www.cnblogs.com/cnbp/p/12657012.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!