1.switch語句能否作用在byte上,能否作用在long,能否作用在String上:
在switch(expr1)中,expr1只能是一個整數表達式或者枚舉常量,整數表達式可以是int基本類型或Integer包裝類型
由於byte short char都可以隱含轉換爲int,所以,這些類型以及這些類型的包裝類也是可以的,顯然,long String類型是
不符合switch的語法規定.
2.short s1=1; s1 = s1+1;有什麼錯? short s1=1; s1+=1; 有什麼錯?
對於short s1=1; s1=s1+1; 由於s1=s1+1運算時會自動提升表達式的類型,所以結果是int類型,在賦值給short類型s1
時,編譯器將會報告需要強制轉換類型錯誤.
對於short s1=1; s1+=1; 由於+=是java語言規定的運算符,java編譯器會對他進行特殊處理,因此可以正確編譯.
3.char型變量中能不能存儲一箇中文漢字?爲什麼?
char型變量是用來存儲Unicode編碼的字符的,unicode編碼字符集中包含了漢字,所以是可以的,不過呢,如果某個特殊
的漢字沒有被包含在unicode編碼字符集中,那麼,這個char型變量中就不能存儲這個特殊的漢字.
補充說明,unicode編碼佔用兩個字節,所以,char類型的變量也是佔用.
4.使用final關鍵字修飾一個變量時,是引用不能變,還是引用的對象不能變?
指的是引用的變量不能變,引用變量所指向的對象中的內容還是可以變的,例如:
final StringBuffer a = new StringBuffer("immutable");
a = new StringBuffer(""); //編譯報錯
a.append("broken");