需要注意的运算符 | JAVA

发布时间 2023-11-23 11:15:56作者: liontm
  • 算术运算符

需要注意的是a++和++a的区别。

     int d = 25;
     // 查看  d++ 与 ++d 的不同
     System.out.println("d++   = " +  (d++) );
     System.out.println("++d   = " +  (++d) );
其中d++   = 25,++d   = 27;相当于遇到print的时候,d++有一个顺序,从左到右,也就先完成之前的指令而非先运算再print。

还有需要注意的是,谁是得到,谁得到余数
/ 除法 - 左操作数除以右操作数 B / A等于2
取余 - 左操作数除以右操作数的余数 B%A等于0
 
  • 关系运算符,都比较简单,暂时忽略
  • 位运算符
操作符含义描述例子
如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100
| 如果相对应位都是 0,则结果为 0,否则为 1 (A | B)得到61,即 0011 1101
^   如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001
反转 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 (〜A)得到-61,即1100 0011
<<    按位左移运算符。左操作数按位左移右操作数指定的位数。 A << 2得到240,即 1111 0000
>>    按位右移运算符。左操作数按位右移右操作数指定的位数。 A >> 2得到15即 1111
>>>    按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 A>>>2得到15即0000 1111

只有>>>(三个小箭头事儿多一点)会补齐数值

  • 逻辑运算符,暂时忽略
  • 赋值运算符,和算术运算符一样,需要区分   / =, (%)=  。
  • 其他运算符
    • 条件运算符
    •    public static void main(String[] args){
            int a , b;
            a = 10;
            // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
            b = (a == 1) ? 20 : 30;
            System.out.println( "Value of b is : " +  b );
       
            // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
            b = (a == 10) ? 20 : 30;
            System.out.println( "Value of b is : " + b );
         }
      

       instance of 该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。

String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真

  

  • 运算符级别(资料来自菜鸟教程)
类别操作符关联性
后缀 () [] . (点操作符) 左到右
一元 expr++ expr-- 从左到右
一元 ++expr --expr + - ~ ! 从右到左
乘性  * /% 左到右
加性  + - 左到右
移位  >> >>>  <<  左到右
关系  > >= < <=  左到右
相等  ==  != 左到右
按位与 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 && 左到右
逻辑或 | | 左到右
条件 ?: 从右到左
赋值 = + = - = * = / =%= >> = << =&= ^ = | = 从右到左
逗号 左到右
这里的关联性是什么意思呢
(参考菜鸟教程的评论区,关联性表达的是运算的顺序,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算。)