Java 中 Long 和 Int 資料型別的區別
本文將討論 Java 中 int
和 long
資料型別之間的區別,並解釋包裝類 Integer
和 Long
。我們將瞭解這些資料型別和包裝類之間的區別,並能夠根據場景決定使用哪一種。
Java 中的 int
和 long
資料型別
int
資料型別是 Java 中儲存整數的原始資料型別。這意味著 int
指定變數值的大小和型別。但是,它不能呼叫任何方法。int
的大小是 4 個位元組。它可以儲存從 -2,147,483,648
到 2,147,483,647
的值。
long
資料型別也是 Java 中另一種 8 位元組的原始資料型別。它有比 int
更寬的範圍來儲存整數。long
資料型別用於儲存 int
無法儲存的較大整數。它可以儲存從 -9,223,372,036,854,775,808
到 9,223,372,036,854,775,807
的值。
例如,建立一個帶有 int
資料型別的變數 num1
和帶有 long
資料型別的 num3
。將 100
分配給 num1
,將 15000000000L
分配給 num3
。在控制檯中列印變數。再次建立另一個具有相同資料型別的變數 num2
,並分配一個值 2147483648
。然後,列印 num2
變數。請注意,這些程式碼行應該寫在類的 main 方法中。
第一個程式碼示例成功執行,但第二個示例遇到錯誤。這是因為值 2147483648
超出了 int
資料型別的範圍。我們在 long
資料型別的值後面寫上 L
來表示一個 long
值。
示例程式碼:
int num1 = 100;
long num3 = 15000000000L;
System.out.println(num1);
System.out.println(num3);
輸出:
100
15000000000
示例程式碼:
int num2 = 2147483648;
System.out.println(num2);
輸出:
Main.java:3: error: integer number too large
int num2 = 2147483648;
^
1 error
Java 中的 Integer
和 Long
包裝類
包裝類是一種特定型別的類,其物件可以儲存原始資料型別。我們將討論 Integer
和 Long
包裝類。我們可以從包裝器類建立包裝器物件,它允許我們使用與物件關聯的不同方法。
例如,建立一個包裝類 Integer
的物件 myInt
並分配一個值 50
。從包裝類 Long
建立另一個物件 myLong
並分配一個值 326162165161616161
。列印出變數 myInt
和 myLong
。然後建立 String
包裝類的兩個物件,分別是 myString1
和 myString2
。對每個 myInt
和 myLong
物件使用方法 toString()
。最後,呼叫 length()
方法列印物件 myString1
和 myString2
的長度。
在下面的示例中,我們從包裝類 Integer
、Long
和 String
建立了物件。我們用物件呼叫了 toString()
和 length()
之類的方法。toString()
方法將值轉換為字串,我們可以使用 length()
方法來計算它們的長度。如果我們嘗試從原始資料型別訪問這些方法,我們將無法做到。因此,包裝類讓我們建立包裝物件以使用各種操作的方法。
示例程式碼:
Integer myInt = 50;
Long myLong = 326162165161616161L;
System.out.println(myInt);
System.out.println(myLong);
String myString1 = myInt.toString();
System.out.println(myString1.length());
String myString2 = myLong.toString();
System.out.println(myString2.length());
輸出:
50
326162165161616161
2
18
Java 中的 int
和 Integer
之間的差異以及 long
和 Long
之間的區別
int
或 long
與 Integer
和 Long
之間的主要區別在於資料型別是原始型別,而包裝類是非原始型別。原始資料型別儲存特定值,而包裝類的物件只是指向儲存資料位置的指標。
Integer myInt = new Integer(5);
int num = 5
上面的 myInt
物件只是一個指向資料 5
位置的指標。儲存 myInt
物件的記憶體包含值 5
位置的記憶體地址。它只是對值位置的引用。同時,儲存變數 num
的記憶體包含值 5
。
這個概念可以用 null
值來形象化。我們可以將 myInt
物件設定為空值,但我們不能對 num
變數執行相同操作。物件可以引用空地址,因為物件是引用型別。int
資料型別不能包含空值,因為 int
是原始型別,無法引用。因此,當我們將 null
分配給一個物件時,它會輸出為 null,但是當我們將其分配給 int
型別時,則會丟擲錯誤。
示例程式碼:
Integer myInt = null;
System.out.println(myInt);
輸出:
null
示例程式碼:
int num = null;
System.out.println(myInt);
輸出:
Main.java:6: error: incompatible types: <null> cannot be converted to int
int num = null;
^
1 error