Java学习日记-2.1 运算符

时间:2020-12-20 07:31:26

1. 赋值运算符

赋值运算符是有值的

int i;
System.out.println(i = 5); //输出5

正因为赋值运算符有值,所以可以可以连等地赋值

int j,k,l,m,n;
j = k = l = m = n = 5;
System.out.println(""+j+k+l+m+n);//输出55555

2. 位运算符

2.1 非~

举例:~-5

-5的原码:1000_0000_0000_0000_0000_0000_0000_0101

-5的反码:1111_1111_1111_1111_1111_1111_1111_1010

-5的补码:1111_1111_1111_1111_1111_1111_1111_1011

-5取非后:0000_0000_0000_0000_0000_0000_0000_0100(也就是4)

非运算连带符号位一起取非

2.2 带符号右移>>

左边的空位用原来的符号位补充

2.3 无符号右移>>>

左边的空位用0补充

2.4 左移<<

右边的空位用0补充

注:移位准则

  a. 低于int类型的(byte、short、char)的操作数总是先自动类型转换为int类型后再移位

  b. int类型的数移的位数超过32的话,先对移的位数用32求余,然后用移动余数位

  c. long和int类似,只是用64求余

  (移位只是生成了一个新的数,不会对源操作数产生影响)

3. 比较运算符

3.1 等于==

  基本数据类型直接比;如果比较的是引用类型,则只有当两个引用类型相同,或者具有继承关系时才能编译通过,只有两个引用指向的是同一个对象时才返回true,两个对象值相等也不行。

4. 逻辑运算符

4.1 与

短路与&&  与&

4.2 或

短路或||  或|

短路与或在判断前一个表达式的逻辑结果就能决定整个表达式时,不执行后面那个表达式。

4.3 三目运算符

expression ?if-true:if-false

5. 运算符的结合性

  大部分运算符是从左往右结合的,但是单目运算符(++、--、~、!)、赋值运算符(=、+=、-+、*=等)和三目运算符(?:)除外