1. 运算符
+, -, *, /, %, ++,–,=,
说明:
+:加号,正号,字符串连接符
/:取商
%:取余
++,–:自增,自减
++,–放在数字前后的区别,举例示范:

int b = 0;
		int c = 5;
		double x = b++ *c++*++b;
		System.out.println(x);
		输出结果:0.0
int b = 0;
		int c= 5;
		double x = ++b*c++*b++;
		System.out.println(x);
		输出结果:5.0

2.赋值运算符
+=,-=,*=,/=,%=
注:赋值运算符使用时,隐含了自动强制转化

3. 比较运算符
==,!=,>,>=,<,<=
计算结果都是boolean类型

4.逻辑运算符
&,|,^,!,&&,||
用于连接boolean类型
&:两个都是true时才为true
|:有一个true就为true
^:两个都结果都为true或者都为false 的时候结果为false; 一个false,一个true则为true
!:非
&&: 和& 一样,但是有短路效果,比如&&前面为false,则直接判定结果为false,&&后面的语句不执行。
||:和|一样,但是有短路效果,比如||前面为true那么直接判断结果为true,||后面的语句不执行。

5.位运算符
&,|,^,~,<<,>>,>>>
两边连接的都是数字
注:在做位运算之前要先将数字转成2进制
&: 两边同样位置的地方都是1才为1,否则为0
|: 两边同样位置的地方有1就为1,否则为0
^: 两边同样位置的地方同为0或同为1则为0,不同则为1
~:按位取反
<<:左移,左边最高位丢弃,右边补上0
>>:右移,最高位是0,左边补齐0;最高位是1,左边补齐1
>>>:无符号右移,无论最高位是0还是1,左边补齐0
举例如下:

int a = 3;
int b = 4;
//int 类型在JAVA中为32位
//int a 转成二进制就变成 00000000 00000000 00000000 00000011
//int b 转成二进制就变成 00000000 00000000 00000000 00000100
System.out.println(a & b);
// & 处理之后结果为:00000000 00000000 00000000 00000000 十进制结果应该是0
System.out.println(a | b);
// | 处理之后的结果为:00000000 00000000 00000000 00000111 十进制结果应该是7
System.out.println(a ^ b);
// ^ 处理的结果为:00000000 00000000 00000000 00000111 十进制结果应该是7
System.out.println(a ^ b ^ b);
// 第一个 ^ 处理后的结果为:00000000 00000000 00000000 00000111
// 第二个 ^ 同样处理结果又变回原来的值:00000000 00000000 00000000 00000011 十进制结果为3
// 一个数对另一个数^两次,结果为出现一次的那个数,比如a^b^b结果为a, a^b^a结果为b
// 通过^实现两个数的交换 a=a^b;b=a^b;a=a^b
System.out.println(~ a);
// ~ 按位取反,处理过程如下:
// 1.先取补码:11111111 11111111 11111111 11111100
// 2.再取反码(补码-1):11111111 11111111 11111111 11111011
// 2.再取原码(符号位不变其余取反):10000000 00000000 00000000 00000100 十进制数值为-4

System.out.println(3<<2);
// 3的二进制:00000000 00000000 00000000 00000011
// 向左移动2位最后2位补0:00000000 00000000 00000000 00001100 十进制结果为12(也就是 左边的数*2的右边数次方,这里为3*2^2)

System.out.println(3>>2);
// 3的二进制:00000000 00000000 00000000 00000011
// 向右移动两位,右边补0: 00000000 00000000 00000000 00000000  值为0(c=a>>b,计算规则:a/2^b,这里为3/2^2=0)

System.out.println(-3>>2);
//负数先获取-3 的二进制补码,再操作移动补码,最后将移动操作后的补码取原码
//-3 的二进制原码:10000000 00000000 00000000 00000011
//-3 的二进制反码:11111111 11111111 11111111 11111100
//-3 的二进制补码:11111111 11111111 11111111 11111101
//-3的补码右移2位:11111111 11111111 11111111 11111111
//补码-1取反码   :11111111 11111111 11111111 11111110
//符号位不动取原码:10000000 00000000 00000000 00000001 十进制数值为-1

System.out.println(-3>>>2);
//负数先获取-3 的二进制补码,再操作移动补码(左边空缺的地方全部补0),最后将移动操作后的补码取原码
//-3 的二进制原码:10000000 00000000 00000000 00000011
//-3 的二进制反码:11111111 11111111 11111111 11111100
//-3 的二进制补码:11111111 11111111 11111111 11111101
//-3的补码右移2位:00111111 11111111 11111111 11111111
// 十进制结果为1073741823

6.三元运算符
(关系表达式)?表达式1:表达式2
(关系表达式)必须为boolean类型;
如果(关系表达式)为true,那么值为表达式1的值;
如果(关系表达式)为false,那么值为表达式2的值;
范例:
1).比较两个值的大小

int m = 100;
		int n = 50;
		System.out.println((m>n)?m:n);
		
		输出结果:100

2). 比较三个值的大小

int x = 100;
		int y = 50;
		int z = 60;
		int max = (x>y)?((x>z)?x:z):((y>z)?y:z);
		System.out.println(max);
		//执行步骤:
		//1.判断x>y,如果是true进入((x>z)?x:z),如果是false进入((y>z)?y:z)
		//2.判断x>z或者y>z是true还是false