优先级

运算符常见问题 - 图1
优先级为2的运算符还有强制类型转换 ()()new

赋值运算符

  1. public static void main(String[] args) {
  2. int a = 2;
  3. a *= a + 3;
  4. System.out.println(a);
  5. }

image.png

从结果来看先计算 a + 3 再计算 *= ,相当于 a = a * (a + 3)

赋值运算符自带强制类型转换

  1. public class Main {
  2. public static void main(String\u005B\u005D args) {
  3. int x = 2;
  4. x += 3.5;
  5. System.out.println(x);
  6. }
  7. }

image.png

取模

模的正负取决于被除数!
image.png

移位运算符

移位运算符的右操作数要完成模32或64(取决于左操作数)的运算时会自动对右操作数完成模32或64后再移位!

  1. public class Main {
  2. public static void main(String\u005B\u005D args) {
  3. int x = 1;
  4. System.out.println(x << 35);
  5. }
  6. }

image.png