赋值和算术运算符

赋值运算符=是最常用的运算符,其实就是将我们等号右边的结果,传递给等号左边的变量,例如:

  1. int a = 10;
  2. int b = 1 + 8;
  3. int c = 5 * 5;

算术运算符也就是我们在小学阶段学习的+-*/%,分别代表加减乘除还有取余,例如:

  1. int a = 2;
  2. int b = 3;
  3. int c = a * b;
  4. //结果为6

需要注意的是,+还可以用作字符串连接符使用:

  1. System.out.println("lbw" + "nb"); //lbwnb

当然,字符串可以直接连接其他类型,但是会全部当做字符串处理:

  1. int a = 7, b = 15;
  2. System.out.println("lbw" + a + b); //lbw715

算术运算符还包括++和—也就是自增和自减,以自增为例:

  1. int a = 10;
  2. a++;
  3. System.out.println(a); //输出为11

自增自减运算符放在变量的前后的返回值是有区别的:

  1. int a = 10;
  2. System.out.println(a++); //10 (先返回值,再自增)
  3. System.out.println(a); //11
  4. int a = 10;
  5. System.out.println(++a); //11 (先自增,再返回值)
  6. System.out.println(a); //11
  7. int a = 10;
  8. int b = 2;
  9. System.out.println(b+++a++); //猜猜看结果是多少

为了使得代码更简洁,你还可以使用扩展的赋值运算符,包括+=、-=、/=、*=、%=,和自增自减类似,先执行运算,再返回结果,同时自身改变:

  1. int a = 10;
  2. System.out.println(a += 2); //等价于 a = a + 2

关系运算符

关系运算符的结果只能是布尔类型,也就是要么为真要么为假,关系运算符包括:

  1. > < == //大于小于等于
  2. >= <= != //大于等于,小于等于,不等于

关系运算符一般只用于基本类型的比较,运算结果只能是boolean:

  1. int a = 10;
  2. int b = 2;
  3. boolean x = a > b;
  4. System.out.println(x);
  5. //结果为 true

逻辑运算符

逻辑运算符两边只能是boolean类型或是关系/逻辑运算表达式,返回值只能是boolean类型!逻辑运算符包括:

  1. && //与运算,要求两边同时为true才能返回true
  2. || //或运算,要求两边至少要有一个为true才能返回true
  3. ! //非运算,一般放在表达式最前面,表达式用括号扩起来,表示对表达式的结果进行反转

实际案例来看看:

  1. int a = 10;
  2. int b = 2;
  3. boolean x = a > b && a < b; //怎么可能同时满足呢
  4. System.out.println(x); //false
  1. int a = 10;
  2. int b = 2;
  3. boolean x = a > b || a <= b; //一定有一个满足!
  4. System.out.println(x); //true
  1. int a = 10;
  2. int b = 2;
  3. boolean x = !(a > b); //对结果进行反转,本来应该是true
  4. System.out.println(x); //false

位运算符

  1. & //按位与,注意,返回的是运算后的同类型值,不是boolean!
  2. | //按位或
  3. ^ //按位异或 0 ^ 0 = 0
  4. ~ //按位非

按位运算实际上是根据值的二进制编码来计算结果,例如按位与,以4bit为例:
0101 & 0100 = 0100 (只有同时为1对应位才得1)

三目运算符

三目运算符其实是为了简化代码而生,可以根据条件是否满足来决定返回值,格式如下:

  1. int a = 7, b = 15;
  2. String str = a > b ? "行" : "不行"; // 判断条件(只能是boolean,或返回boolean的表达式) ? 满足的返回值 : 不满足的返回值
  3. System.out.println("汉堡做的行不行?"+str); //汉堡做的行不行?不行