运算符
1、赋值运算符 =
例1:int i=100; //复制一份
int a=i;
例2: int a,b,c,d,e,f,g;
a=b=c=d=e=f=g=99; 或:a=99; b=99; c=99; d=99; e=99; f=99; g=99;
变量声明在同一个区域(大括号)内不得重名
2、算术运算符
+;-; ; /; %; ++; --; 符合运算符:+=;-=;=; /=; %=;
乘法和除法优先级高
10%5-------如果10能被5整除就返回true,否则返回flash
++;–; int i=100;
int a=0;
a=i++;-----------先把值给a,后自己再++(a=i; i=i+1;)
a=++i;-----------先运算,后把值给a(i=i+1; a=i;)
如果++在变量的前面那就是先加,在后面后加
符号在前先运算,符号在后后运算
如:
//符号在前先运算,符号在后后运算
public class Test {
public static void main(String[] args) {
int i=90;
System.out.println(i++);
System.out.println(++i);
System.out.println(++i);
System.out.println(--i);
System.out.println(i--);
System.out.println(--i);
System.out.println(++i);
System.out.println(i--);
}
} //输出 90 92 93 92 92 90 91 91
int i=19; 输出值 i的值
System.out.println(i++); 19 20
System.out.println(++i); 21 21
System.out.println(i+1); 22 21 //i与1进行运算输出,但是i本身的值不变
System.out.println(--i); 20 20
System.out.println(i++); 20 21
System.out.println(2+i); 23 21
System.out.println(--i); 20 20
System.out.println(i++); 20 21
int i=589;
System.out.println(i+=2);
System.out.println(9+i);
System.out.println(i++);
System.out.println(--i);
System.out.println(i++);
System.out.println(i--);
System.out.println(i-=2);
System.out.println(i+2); 输出
591
600
591
591
591
592
589
591
复合运算:int i=100;
i=i+100;---------相当于i+=100;
3、关系运算符 >;<; >=; <=; ==; !=
(专门来问数值的)
猪猪的年龄>18 true false
成立 不成立
真 假
4、逻辑运算符 &&(与、、同时) ;|| (或、、或者); !(非、、取反)
如: 买 奥特曼&&大头儿子&&光头强
奥特曼||光头强
!true !false !(奥特曼||光头强)
&&_
先从左开始 如果左边运行结果为true,则继续运行右边;,如果左边为false则右边不继续运行
true 运行 &&双方为true才成立
false 不运行
||_
先从左开始 如果左边运行结果为true,则不继续运行右边;,如果左边为false则右边继续运行
true 不运行 &&双方为true才成立
false 运行
优先级高到低:!-----&&-----||
!true && true || false
false&&true ||false
false||false
5、位运算符 &; |; ^; ~;>> ; <<; >>>
一个字节-----8位
1表示true;0表示false 两边为true才true
15的二进制:0000 1111 1和1true得1
5的二进制: 0000 0101 1和0false得0
15&5得: 0000 0101
System.out.println(15&5); //输出5
System.out.println(15|5); //输出15
18的二进制 : 0001 0010
7的二进制: 0000 0111
18|7 得23: 0001 0111
18&7得2 : 0000 0010
异或 ^ (要两边不一样才是true)
18^7 二进制:0000 0111
0001 0010
得2: 0001 0101
取反 ~
7二进制: 0000 0111
7~ 为-8 : 1111 1000
-8取反为7
左移<<
7<<2 (7左移2位,后面补0) 向左移2位相当于乘以4(2的平方)
7:左移前: 0000 0111
左移后: 0001 1100
右移 >> 7>>2 //高位(这里指前两位)是0,那就补两个0
右移前: 0000 0111 向右移2位,前面补2个0,再把后面2位去掉
右移后: 0000 0001
-8>>2 // 高位(这里指前两位)是1,那就补两个1
右移前: 1111 1000
右移后: 1111 1110 向右移2位,前面补2个1,再把后面2位去掉
//高位是0则是正数,是1则是负数
无符号右移 >>>
10>>>2
右移前:0000 1010 不管高位是0或者1都直接右移
右移后:0000 0010