Java(8):运算符

运算符

  • 算数运算符:+ - * / % ++ --
  • 赋值运算符:= += -= *= /=
  • 关系运算符:> < >= <= == != instanceof
  • 逻辑运算符:&& || !
  • 位运算符:& | ^ ~ >> << >>>
  • 条件运算符?:

自增理解

int a = 3;
int b = a++; // 先赋值,再自增,相当于在后面执行一句a = a + 1
//a = a + 1
System.out.println(a); // 4
// a = a + 1
int c = ++a;// 先自增,再赋值,相当于在前面执行一句a = a + 1

System.out.println(a); // 5
System.out.println(b); // 3
System.out.println(c); // 5

注意点:
a++和a=a+1有区别,看下面代码:

short a = 10;
a = a + 1; // 编译报错
a = (short)(a + 1); // 成功
a++; // 成功,自增不会改变原来的数据类型

位运算

A  = 0011 1100
B  = 0000 1101
A&B= 0000 1100  与,位都为1,才为1
A|B= 0011 1101  或,有一个为1,则为1
A^B= 0011 0001  异或,位相同则为0,不同则为1  公式:m = (m^n)^n 
~B = 1111 0010  非,取反
// << 左移  在一定范围内(如果1移动到符号位,即最高位,就变成负数了,所以说一定范围内),相当于*2,右边移动之后空出来的地方用0补齐
// >> 右移  在一定范围内相当于/2,如果是正数,左边移动之后空出来的地方用0补齐;如果是负数,左边移动之后空出来的地方用1补齐;
// >>> 无符号右移  在一定范围内相当于/2,左边移动之后空出来的地方用0补齐;
0000 0000 0
0000 0001 1
0000 0010 2  1左移一位<<  就是4
0000 0011 3
0000 0100 4  1左移一位<<  就是8
0000 1000 8
0001 0000 16    

字符串连接

int a = 10;
int b = 20;

System.out.println(a+b+""); // 30
System.out.println(""+a+b); // 1020

三元运算符

// x?y:z
// 如果x为真,则y,否则z
int score = 59;
String type = score>60 ? "及格":"不及格";
System.out.println(type);

优先级

youxianji

原文地址:https://www.cnblogs.com/zhangtu/p/14454047.html