[每日一題]Java 基本資料型別基礎面試題
基礎知識:
java中基本型別資料範圍從大到小:double>float>long>int>byte>char
隱式轉換:資料範圍小的可以被自動轉化為大的。也就是“向上轉型”:等號左邊大資料型別,右邊小資料型別,如果想要向下轉型,就得強制型別轉換,即加括號——float f = (float)3.4。
java 的 char 型別變數是用來儲存 Unicode 編碼字元的,Unicode 字符集包含了漢字,所以 char 型別自然就能儲存漢字,但是在某些特殊情況下某個生僻漢字可能沒有包含在 Unicode 編碼字符集中,這種情況下 char 型別就不能儲存該生僻漢字了。
JAVA中float與double的區別:不宣告的時候,預設小數都用double來表示。如果要用float的話,則應該在其後加上f。
double 型佔64位 (8位元組),float型佔32位(4位元組),long型佔64位(8位元組),int 型佔32位(4位元組),short 2位元組,byte 1位元組。
整形和浮點型在記憶體中的表示方法是不一樣的,對於浮點型來說,有一部分是用來表示有效位數的,有一部分是用來表示多少次方。這也是為什麼long的資料型別比float小,long表示的最大數還比float小。
問題:
- 問:如下程式語句有什麼問題嗎?
short s1 = 1 ;
s1 = s1 + 1; //無法編譯,IDE 提示錯誤
short s2 = 1;
s2 += 1; //2
問:java 中 char 型別變數能不能儲存一箇中文的漢字,為什麼?
問:java 的 Integer 和 int 有什麼區別?(3點:型別、初值、操作以及內建屬性和方法)
問:java 的 switch 語句能否作用在 byte 型別變數上,能否作用在 long 型別變數上,能否作用在String 型別變數上?
問:能否在不進行強制轉換的情況下將一個 double 值賦值給 long 型別的變數?
問:java 中 3*0.1 == 0.3 將會返回什麼?true 還是 false?(浮點數不能完全精確的表示出來,一般都會損失精度。)
問:java 中 float f = 3.4; 是否正確?(向下轉型)