Java資料型別及型別轉換

Mr.Faker發表於2020-11-27

1、int和Integer有什麼區別

int是8種基礎變數之一,位元組長度為4,。屬於基礎資料型別,它的建立不會在堆記憶體中開闢空間,一般是儲存在棧記憶體中,可以進行算數加減乘除運算。
Integer是int的包裝類,在java.lang包下,不屬於基本資料型別,是一個類所以它不能執行加減乘除運算。在引數傳遞的時候,傳遞的是它代表的物件的一個引用。

2、各個資料型別的取值範圍

  1. int型資料位元組長度為4,一共32位,因此取值範圍為:
    -2^31 ~ 2^31-1
  2. long型資料位元組長度為8,一共64為,取值範圍為
    -2^63 ~ 2^63-1
  3. flooat,3.4E+10^(-38) ~ 3.4E+10^38
  4. double,1.7E+10^(-308) ~ 1.7E+10^308
  5. char,Java中char採用Unicode編碼格式,用2個位元組來表示一個字元,也就是說所有的char型別資料的位元組長度都是2,一共16位。0~2^16-1

3、如何使用八進位制和十六進位制表示整形資料

Java中八進位制採用0開頭,十六進行採用0x開頭。

4、Java可以用非0來代替true嗎

Java是一種強型別的語言,它對條件表示式有非常嚴格的固定,只能使用boolean型的資料進行條件判斷。如果使用非0數進行判斷,則體現為語法錯誤。

5、boolean和它的包裝類區別

boolean是基本的資料型別,而Boolean是一個類。Java之所以為每一個基礎資料型別都提供一個相應包裝類的目的在於將Java中的所有東西都抽象成物件,方便控制和使用。

6、字串是否自動生成一個String物件

會,字串具有一定的特殊性,JVM在執行雙引號操作符的時候,會自動建立一個String物件,並返回這個物件的引用。

7、字串物件池的作用是什麼?

從Java5.0開始,Java虛擬機器在啟動的時候會例項化9個物件池。分別用來儲存8種基本資料型別的包裝類物件和String物件。

String str1 = “abc”;
String str2 = new String("abc");

上述兩行程式碼,區別在於第一行方法在物件池中取出物件,第二行方法直接生成新的物件。當程式中直接引用雙引號引起來一個字串時,JVM會到String的物件池中去檢查是否有一個值相同的物件,如果沒有,既阻礙物件池中建立,並返回其引用。下面的程式碼返回true。

String str1 = “abc”;
String str2 = “abc”;
System.out.println(str1==str2);

8、StringBuffer和StringBuilder存在的作用是什麼

Java的字串String物件,有一個特性,就是不變性,只能被建立,不能改變其中的值。因此,一些大量使用字串的程式可能會出現效能瓶頸,甚至記憶體溢位。
在Java程式中,如果有大量拼接字元需要的話,應該使用StringBuffer和StringBuilder類,可以避免不必要的String物件的產生,以提高程式的效能。兩者的作用類似,只不過StringBuilder執行緒是安全的。

9、如何使用指定的字符集創造String物件

使用帶有字符集編碼的String的構造方法既可以用指定的字符集來後重新創造字串物件了,該方法的引數有兩個:一個是byte陣列,另一個則是字符集編碼的字串形式,例如UTF-8、GBK、ISO-8859-1等。

相關文章