scjp考试准备 - 2 - 逻辑运算及类型转换
判斷如下代碼的執(zhí)行結(jié)果:
public class Spock{public static void main(String[] args){Long tail = 2000L;Long distance = 1999L;Long story = 1000L;if( (tail>distance) ^ ((story*2)==tail ) )System.out.print("1");if((distance+1 !=tail) ^ ((story*2)==distance) )System.out.print("2");} }?
這道題考察的是邏輯運(yùn)算及條件判斷,同時(shí)以基本類型的包裝類和自動(dòng)類型轉(zhuǎn)換做煙幕。
Java中的邏輯運(yùn)算符有6個(gè),三個(gè)比較常見的與(&&)、或(||)、非(!);三個(gè)用的比較少的不短路與(&)、不短路或(|)、異或(^)。
著重理解下后三個(gè):
不短路與(&):和短路與(&&)功能相同。不同處在于短路與(&&)在判斷第一個(gè)表達(dá)式錯(cuò)誤后就不會(huì)計(jì)算其余的表達(dá)式,不短路與(&)總是會(huì)計(jì)算所有的表達(dá)式;
不短路或(|):和短路或(||)功能相同。不同處在于短路或(||)在判斷第一個(gè)表達(dá)式正確后就不會(huì)計(jì)算其余的表達(dá)式,不短路或(|)總是會(huì)計(jì)算所有的表達(dá)式;
異或(^):兩個(gè)表達(dá)式相同返回false;表達(dá)式不同返回true(這家伙唯恐天下不亂)。
此外這三個(gè)還是位運(yùn)算符(不詳說)。
?
基本類型的包裝類。這里使用了包裝類的自動(dòng)裝箱和自動(dòng)拆箱功能。自動(dòng)裝箱是指可以把一個(gè)基本類型的變量直接賦給對(duì)應(yīng)包裝類的變量,或者賦給Object變量;自動(dòng)拆箱則與之相反,可以把包裝類的變量賦給對(duì)應(yīng)基本類型的變量。自動(dòng)拆箱和自動(dòng)裝箱功能是在JDK1.5之后出現(xiàn)的。
?
基本類型的自動(dòng)轉(zhuǎn)換遵循如下規(guī)則:
在一個(gè)算術(shù)表達(dá)式中,如果有多個(gè)不同基本數(shù)據(jù)類型的值,那么表達(dá)式的值會(huì)自動(dòng)提升到表達(dá)式中最高等級(jí)數(shù)值的類型。
?
自動(dòng)裝箱時(shí)類型不會(huì)自動(dòng)轉(zhuǎn)換;自動(dòng)拆箱時(shí)會(huì)執(zhí)行自動(dòng)轉(zhuǎn)換(實(shí)際上是先拆箱再自動(dòng)轉(zhuǎn)換)。
?
說了這許多,再看看這題——簡(jiǎn)單的加減乘除好吧。
第一個(gè)條件判斷全為true,第二個(gè)條件判斷全為false,最后什么也不會(huì)輸出。
so,心思還是單純點(diǎn)比較好
轉(zhuǎn)載于:https://www.cnblogs.com/amunote/p/3796410.html
總結(jié)
以上是生活随笔為你收集整理的scjp考试准备 - 2 - 逻辑运算及类型转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cocos2d-X内存管理研究一
- 下一篇: Openvswitch手册(5): VL