java基础笔记之运算符
注意:图意结合能帮助理解。印象更加深刻。
/*
* 一,算术运算符
*/
//① +可以为加法运算符,也可以为字符串拼接符号
int yu=20;
int num2 = 30;
System.out.println(yu+num2);//50
System.err.println(yu+num2+"ab");//50ab
System.out.println("ab"+yu+num2);//ab2030
//②除法:整数与整数相除,得到的是整数。
int yu1=10;
int num3 = 3;
System.out.println(yu1/num3);//3
//小数与整数相除得到小数
float yu2 = 10;
int num4=3;
float hh1 = yu2/num3;
System.out.println(hh1);//3.3333333
//③ % 取余,求模 被模数为正结果为正 ,为负 结果为负。被模数也就是被除数前面哪个。
System.out.println(10%3);//1
System.out.println(-10%3);//-1
System.out.println(10%-3);//1
//④ ++ 自增 num5++ 先计算,再加1,++num5 先加1,再计算。
int num5 = 10;
System.out.println(num5++);//10
System.out.println(num5);//11
System.out.println(++num5);//12
System.out.println(num5);//12
//⑤ -- 自减 num5-- 先计算,再减1,--num5 先减1,再计算。
int num6 = 10;
System.out.println(num6--);//10
System.out.println(num6);//9
System.out.println(--num6);//8
System.out.println(num6);//8
/*
*二,赋值运算符
*/
//① += 相当于 x = x+y;
int x =10;
int y = 40;
x+=y;
System.out.println(x);//50
//② -=,*=,/= 跟+=一样.
/*
*三,关系运算符(比较运算符)
*/
//①注意:"=="是判断是否相等,"="是赋值运算符不要搞混了
//②"!="是判断不相等,"<>"SQL语法中的不相等(oracel)
int num7 =7;
int num8 =8;
System.out.println(num7=num8);//8
System.out.println(num7==num8);//true
System.out.println(num7!=num8);//false
//<=,<,>,>=的用法跟平常的数学一样,比较就OK了。
/*
*四, 逻辑运算符(布尔运算符)
*/
// ① && (and) : 所有条件为true ,只要任意一个为false,结果就为false,全部true,结果才为true
System.out.println(3>5 && 4<7);//false //短路运算
System.out.println(3<5 && 4<7);//true
System.out.println(3>5 && 4>7);//false //短路运算
//短路运算 : 只要有false出现,后面的就不能计算了。
int num9=10;
boolean result = (num9>20 && ++num9>=11);
System.out.println(num9);//10
System.out.println(result);//false
//② || (or) : 只要任意一个为true ,结果就为true,全部为false,结果才为false
System.out.println(3>5 || 4<7);//true 短路运算
System.out.println(3>5 || 4>7);//false
System.out.println(3<5 || 4<7);//true 短路运算
//③ ! (not) 对所有的结果取反
boolean result1=true;
System.out.println(!result1);//false
/*
* 五,位运算符 (只对byte,short ,char,int,long有效,这些都可以隐式转换为int)
*/
//① &(and) 所有条件为true ,只要任意一个为false,结果就为false,全部true,结果才为true
System.out.println(3>5 & 4<7);//false //非短路运算
System.out.println(3<5 & 4<7);//true
System.out.println(3>5 & 4>7);//false
//短路运算 : 有false出现,后面的也能计算。
int num10=10;
boolean result2 = (num10>20 & ++num10>=11);
System.out.println(num10);//11
System.out.println(result2);//false
//位运算: 1 true,0 false
System.out.println(1 & 0);//false 非短路运算
System.out.println(0 & 1);//false 非短路运算
System.out.println(1 & 1);//true
System.out.println(0 & 0);//false
//② | (or): 只要任意一个为true ,结果就为true,全部为false,结果才为false
System.out.println(3>5 | 4<7);//true 非短路运算
System.out.println(3>5 | 4>7);//false
System.out.println(3<5 ||4<7);//true
//位运算
System.out.println(1 | 0);//true 非短路运算
System.out.println(0 | 1);//true 非短路运算
System.out.println(1 | 1);//true
System.out.println(0 | 0);//false
/*
* 逻辑运算符(&&,||)与位运算符(&,|)的异同
* 相同点:都可以做逻辑运算
* 不同点:做逻辑运算时,&&,||可以做短路运算,&,|不可以,逻辑运算符效率》位运算符
* 位运算符可以做安位运算 ,逻辑运算符不可以。
*
* */
//③ 异或运算符:^ ,两者相同返回true,不同为false
System.out.println(true ^ true);//true
System.out.println(false ^ true);//false
System.out.println(false ^ false);//true
System.out.println(true ^ false);//false
//位运算,1 true ,0 false
System.out.println(1 ^ 0);//0
System.out.println(0 ^ 1);//0
System.out.println(1 ^ 1);//1
System.out.println(0 ^ 0);//1
//按位运算,按位与&,按位或|,按位异或^
System.out.println(3 & 4);//0
System.out.println(3 | 4);//7
System.out.println(3 ^ 4);//7
//计算过程:把3和4换为二进制,这里只是拿&做一个列子,|,^是一个道理。
//3 0 0 1 1
//4 0 1 0 0
//& 0 0 0 0 所以结果是0
/*
*左右移位运算相当与实现整数 乘以或者除以2的n次方
*/
//④ <<左移位,将整数二进制化,整体向左移动n位,右边空出的位置全部补零
int num11=4;
System.out.println(num11<<2);//16 num11*2^2=16
//⑤ >>右移位,将整数二进制化,整体向左移动n位,如果最高位是0(正数),则左边空着的部分补0,如果是1(负数)则补1.
int num12 = 4;
System.out.println(num12>>2);//1 num12/2^2=1
//⑥ >>> 无符号位移,将整数二进制化,整体向右移动n位,右边空出的位置全部补0。
int num13 = -4;
System.out.println(num13>>>2);//1073741823
/*
* 三元运算符:表达式1?表达式2:表达式3
*/
System.out.println(40>30?"是的":"不是");
/*
* 二元运算符:= ,+, <. >, &&,指针对两个值的
*
*/
System.out.println(8+6);//14
/*
* 一元运算符:!,++ ,--,指针对一个值的
*/
System.out.println(!false);
运算符的优先级