計算機的最基本用途之一就是執行數學運算,作為一門計算機語言,Java也提供了一套豐富的運算符來操縱變量。我們可以把運算符分成以下幾組:
- 算術運算符
- 關系運算符
- 位運算符
- 邏輯運算符
- 賦值運算符
- 其他運算符
邏輯運算符結果
~a是按位非,就是一位一位的計算
!a就是純非
System.out.println(!false);//true
System.out.println(6>3&&'6'>10);//這個結果應該是真的,前面是真,后面自動提升,確實大于10,也是真,所以結果為真
System.out.printl(3>=5||‘c’>'a');//前面是假,后面是真,所以是真
System.out.println(3>=5||'b'>'a');//前面是假,后面是真,結果為真
主要需要注意的是a&&b和a&b的區別
int a=5;
int b=10;
if(a>4|b++>10){
System.out.println(a);//前面是5>4,|這個符號就是兩面都要算,所以b就要增加1,為11
System.out.println(b);//
}
int c=5;
int d=10;
if(c>4||d++>10){
System.out.println(c);//這個前面為真,后面不管真假加過都是真了,所以就不用計算后面的了,所以就沒有d+1這一說了
System.out.println(d);
}
現在要說的就是短路運算符
&&和||
&&當表達式左邊為假,右面就不需要計算了,否則必須算
||當表達式左邊為真,右面就不需要計算了,否則必須算
&|:無論什么情況下,左右兩面都必須計算
賦值運算符
=是最常見的一種賦值運算符,就是將符號右面的表達式的值賦給左邊的常量,如:int a=3;
擴展運算符:就是將其他的運算符和賦值運算符結合起來,如+=,-=,*=等等。
那么他們之間的區別是什么呢
擴展運算符不檢查類型的匹配。什么意思呢,就是說
比如:
short b=0;
int a=1;
?b=b+a;
System.out.println(b);//結果是什么呢
錯誤!
a是int,和b相加能賦值給short么,當然不行!所以是錯誤的。
但是b+=a;這樣就可以了,就是說不檢查類型匹配。
三目運算符
表達式:x?y:z
其中呢x為boolean類型的表達式,先計算x的值,若為true,則整個三目運算符的結果為y的值,否則整個運算結果為表達式z的值
例如:
string str=(9>3)?“9大于5”:“9不大于5”;
System.out.println(str);
因為,表達式 9>5 的值為 true ,所以,返回: 9大于5
作業:寫一個判斷閏年的函數
1.能被4整除但是不能被100整除
2.能被400整除