1. 程式人生 > >[每日一題]Java 基本資料型別基礎面試題

[每日一題]Java 基本資料型別基礎面試題

基礎知識:

  1. java中基本型別資料範圍從大到小:double>float>long>int>byte>char

  2. 隱式轉換:資料範圍小的可以被自動轉化為大的。也就是“向上轉型”:等號左邊大資料型別,右邊小資料型別,如果想要向下轉型,就得強制型別轉換,即加括號——float f = (float)3.4。

  3. java 的 char 型別變數是用來儲存 Unicode 編碼字元的,Unicode 字符集包含了漢字,所以 char 型別自然就能儲存漢字,但是在某些特殊情況下某個生僻漢字可能沒有包含在 Unicode 編碼字符集中,這種情況下 char 型別就不能儲存該生僻漢字了。

  4. JAVA中float與double的區別:不宣告的時候,預設小數都用double來表示。如果要用float的話,則應該在其後加上f

  5. double 型佔64位 (8位元組),float型佔32位(4位元組),long型佔64位(8位元組),int 型佔32位(4位元組),short 2位元組,byte 1位元組。

  6. 整形和浮點型在記憶體中的表示方法是不一樣的,對於浮點型來說,有一部分是用來表示有效位數的,有一部分是用來表示多少次方。這也是為什麼long的資料型別比float小,long表示的最大數還比float小

問題:

  1. 問:如下程式語句有什麼問題嗎?
short  s1 = 1
; s1 = s1 + 1; //無法編譯,IDE 提示錯誤 short s2 = 1; s2 += 1; //2
  1. 問:java 中 char 型別變數能不能儲存一箇中文的漢字,為什麼?

  2. 問:java 的 Integer 和 int 有什麼區別?(3點:型別、初值、操作以及內建屬性和方法)

  3. 問:java 的 switch 語句能否作用在 byte 型別變數上,能否作用在 long 型別變數上,能否作用在String 型別變數上?

  4. 問:能否在不進行強制轉換的情況下將一個 double 值賦值給 long 型別的變數?

  5. 問:java 中 3*0.1 == 0.3 將會返回什麼?true 還是 false?(浮點數不能完全精確的表示出來,一般都會損失精度。)

  6. 問:java 中 float f = 3.4; 是否正確?(向下轉型)