Treasure Of JAVA——JAVA的資料型別(JAVA面試題)
Java 的資料型別
1.Java 的基本資料型別都有哪些各佔幾個位元組
類別 | 八種 | 位元組數 | 資料表示範圍 |
---|---|---|---|
整型 | byte | 1 | -128~127 |
整型 | short | 2 | -32768~32767 |
整型 | int | 4 | -2147483648~2147483647 |
整型 | long | 8 | -263~263 -1 |
浮點型 | float | 4 | -3.403E38~3.403E38 |
浮點型 | double | 8 | -1.798E308~1.798E308 |
字元型 | char | 2 | 表示一個字元,如(‘a’,‘A’,‘0’,‘家’) |
布林型 | boolean | 1 | 只有兩個值 true 與 false |
2. String 是基本資料型別嗎?
String 是引用型別,底層用 char 陣列實現的。
3. short s1 = 1; s1 = s1 + 1; 有錯嗎?short s1 = 1; s1 += 1 有錯嗎?
前者不正確,後者正確。對於 short s1 = 1; s1 = s1 + 1;由於 1 是 int 型別,因此 s1+1 運算結果也是 int 型,
需要強制轉換型別才能賦值給 short 型。而 short s1 = 1; s1 += 1;可以正確編譯,因為 s1+= 1;相當於 s1 =
(short)(s1 + 1);其中有隱含的強制型別轉換。
4. int 和 和 Integer 有什麼區別?
Java 是一個近乎純潔的物件導向程式語言,但是為了程式設計的方便還是引入了基本資料型別,為了能夠將這些基本
資料型別當成物件操作,Java 為每一個基本資料型別都引入了對應的包裝型別(wrapper class),int 的包裝類就是
Integer,從 Java 5 開始引入了自動裝箱/拆箱機制,使得二者可以相互轉換。
Java 為每個原始型別提供了包裝型別:
- 原始型別: boolean,char,byte,short,int,long,float,double
- 包裝型別:Boolean,Character,Byte,Short,Integer,Long,Float,Double
5. 下面 Integer 型別的數值比較輸出的結果為?
如果不明就裡很容易認為兩個輸出要麼都是 true 要麼都是 false。首先需要注意的是 f1、f2、f3、f4 四個變數
都是 Integer 物件引用,所以下面的==運算比較的不是值而是引用。裝箱的本質是什麼呢?當我們給一個 Integer 對
象賦一個 int 值的時候,會呼叫 Integer 類的靜態方法 valueOf,如果看看 valueOf 的原始碼就知道發生了什麼。
原始碼:
IntegerCache 是 Integer 的內部類,其程式碼如下所示:
簡單的說,如果整型字面量的值在-128 到 127 之間,那麼不會 new 新的 Integer 物件,而是直接引用常量池
中的 Integer 物件,所以上面的面試題中 f1f2 的結果是 true,而 f3f4 的結果是 false。
提醒:越是貌似簡單的面試題其中的玄機就越多,需要面試者有相當深厚的功力。
6. String 類常用方法
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-0DVPwsDm-1600931292543)(https://i.loli.net/2020/09/24/MbVIkxeFDC8wYGH.png)]
7. String、StringBuffer、StringBuilder 的區別?
(1)、可變不可變
String:字串常量,在修改時不會改變自身;若修改,等於重新生成新的字串物件。
StringBuffer:在修改時會改變物件自身,每次操作都是對 StringBuffer 物件本身進行修改,不是生成新的對
象;使用場景:對字串經常改變情況下,主要方法:append(),insert()等。
(2)、執行緒是否安全
String:物件定義後不可變,執行緒安全。
StringBuffer:是執行緒安全的(對呼叫方法加入同步鎖),執行效率較慢,適用於多執行緒下操作字串緩衝區
大量資料。
StringBuilder:是執行緒不安全的,適用於單執行緒下操作字串緩衝區大量資料。
(3)、共同點
StringBuilder 與 StringBuffer 有公共父類 AbstractStringBuilder(抽象類)。
StringBuilder、StringBuffer 的方法都會呼叫 AbstractStringBuilder 中的公共方法,如 super.append(…)。
只是 StringBuffer 會在方法上加 synchronized 關鍵字,進行同步。最後,如果程式不是多執行緒的,那麼使用
StringBuilder 效率高於 StringBuffer。
8. 資料型別之間的轉換
(1)、字串如何轉基本資料型別?
呼叫基本資料型別對應的包裝類中的方法 parseXXX(String)或 valueOf(String)即可返回相應基本型別。
(2)、基本資料型別如何轉字串?
一種方法是將基本資料型別與空字串(“”)連線(+)即可獲得其所對應的字串;另一種方法是呼叫 String
類中的 valueOf()方法返回相應字串。
相關文章
- 【Java】基本資料型別包裝類面試題之一Java資料型別面試題
- Java資料型別Java資料型別
- Java中的資料型別Java資料型別
- Java的基本資料型別Java資料型別
- java基礎之java的基本資料型別Java資料型別
- Java 基本資料型別Java資料型別
- Java -基本資料型別Java資料型別
- Java基本資料型別Java資料型別
- Java基本資料型別和引用型別 - Java那些事兒Java資料型別
- Java技術分享:Java基本資料型別Java資料型別
- Java的主要資料型別(Primitive)Java資料型別MIT
- JAVA型別的問題Java型別
- Java中的基本資料型別與引用資料型別Java資料型別
- Java Grammer:資料型別Java資料型別
- 3.Java資料型別Java資料型別
- 【Java】資料型別轉換Java資料型別
- java資料型別基礎Java資料型別
- Oracle資料型別對應Java型別Oracle資料型別Java
- Java資料型別及型別轉換Java資料型別
- 碎片化學習Java(四)-- Java資料型別Java資料型別
- Java_資料庫面試題Java資料庫面試題
- JAVA中基本資料型別和引用資料型別Java資料型別
- Java資料型別、識別符號Java資料型別符號
- 2、java資料型別轉換Java資料型別
- [java基礎]之資料型別Java資料型別
- Java備忘錄《資料型別》Java資料型別
- Java整型資料型別(詳解)Java資料型別
- java Atomic 基本資料型別Java資料型別
- Java有哪些基本資料型別?Java資料型別
- 【java資料型別和運算子】Java資料型別
- java基本資料型別佔位Java資料型別
- java簡單資料型別(轉)Java資料型別
- java資料型別擴充套件Java資料型別套件
- Java 基本資料型別(新手必看資料)Java資料型別
- java中文問題和資料庫型別有關Java資料庫型別
- Java 支援的資料型別與 MySQL 支援的資料型別對比Java資料型別MySql
- JAVA面試題 java部分Java面試題
- Java面試題 equals()與"=="的區別?Java面試題