標籤:處理 unicode編碼 java編譯 code cas 轉換 應用 原始類型 浮點型
1、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 +=1;有什麼錯?
答:對於short s1=1;s1=s1+1來說,在s1+1運算時會自動提升運算式的類型為int,那麼將int賦予給short類型的變數s1會出現類型轉換錯誤。
對於short s1=1;s1+=1來說 +=是java語言規定的運算子,java編譯器會對它進行特殊處理,因此可以正確編譯。
2、char類型變數能不能儲存一個中文的漢子,為什嗎?
char類型變數是用來儲存Unicode編碼的字元的,unicode字元集包含了漢字,所以char類型當然可以儲存漢字的,還有一種特殊情況就是某個生僻字沒有包含在
unicode編碼字元集中,那麼就char類型就不能儲存該生僻字。
3、Integer和int的區別
int是java的8種內建的未經處理資料類型。Java為每個原始類型都提供了一個封裝類,Integer就是int的封裝類。
int變數的預設值為0,Integer變數的預設值為null,這一點說明Integer可以區分出未賦值和值為0的區別,比如說一名學生沒來參加考試,另一名學生參加考
試全答錯了,那麼第一名考生的成績應該是null,第二名考生的成績應該是0分。關於這一點Integer應用很大的。
Integer類內提供了一些關於整數操作的一些方法,例如上文用到的表示整數的最大值和最小值。
4、switch語句能否作用在byte上,能否作用在long上,能否作用在string上?
byte的儲存範圍小於int,可以向int類型進行隱式轉換,所以switch可以作用在byte上
long的儲存範圍大於int,不能向int進行隱式轉換,只能強制轉換,所以switch不可以作用在long上
string在1.7版本之前不可以,1.7版本之後switch就可以作用在string上了。
5、能否在不進行強制轉換的情況下將一個 double 值賦值給 long 類型的變數?
答:不行,我們不能在沒有強制類型轉換的前提下將一個 double 值賦值給 long 類型的變數,因為 double 類型的範圍比 long 類型更廣,所以必須要進行強制轉換。
6、java 中 3*0.1 == 0.3 將會返回什嗎?true 還是 false?
答:false,因為浮點數不能完全精確的表示出來,一般都會損失精度。
7、java 中 float f = 3.4; 是否正確?
答:不正確,3.4 是雙精確度數,將雙精確度型(double)賦值給浮點型(float)屬於向下轉型(down-casting,也稱為窄化)會造成精度損失,因此需要強制類型轉換 float f = (float)3.4; 或者寫成 float f = 3.4F; 才可以。
Java資料類型——面試題