java基本資料型別byte short int long float double char
byte 是 Java 原始型別。byte型別簡稱“位元組型”,用於表示整數。
int 是 Java 原始型別。 int型別簡稱“整型”,用於表示整數。
short是java原始型別。 short型別簡稱“短整型”,用於表示整數。
long是java原始型別。 long型別簡稱“長整型”,用於表示整數。
byte、short、int、long 的初始預設值皆為 0 。
1. 取值範圍
(1) byte
- byte型別佔1個位元組,即8位,其中最高位為符號位。
所以,byte型別的取值範圍為−28−28
(2) int
- int型別 佔4個位元組,即32位,其中最高位為符號位。
所以,int型別的整數取值範圍為: −231−231
(3) short
- short型別佔2個位元組,即16位,其中最高位為符號位。
所以,short型別的整數取值範圍為: −215−215
(4) long
- long型別佔8個位元組,即64位,其中最高位為符號位。
所以,short型別的整數取值範圍為: −263−263
2. 資料溢位
這裡討論的“資料溢位”是指資料超出所定義資料型別的範圍。
先看 一段程式碼(程式碼1):
byte a=127;
byte b=-128;
System.out.println("a+1="+(a+1));
System.out.println("b+1="+(b-1));
- 1
- 2
- 3
- 4
- 5
執行結果為:
a+1=128
b-1=-129
再看另一段程式碼(程式碼2):
byte a=127;
byte b=-128;
System.out.println("(byte)(a+1)="+(byte)(a+1));
System.out .println("(byte)(b-1)="+(byte)(b-1));
- 1
- 2
- 3
- 4
- 5
執行結果為:
(byte)(a+1)=-128
(byte)(b-1)=127
討論1:為什麼程式碼1的執行結果能超出byte型別的取值範圍?
當溢位使得資料結果超過 8 位,則只取低 8 位進行計算:”127 + 256 = 383“ ,388 用二進位制表示為 1 0111 1111 ,已經超過 8 為,所以只去低 8 位 0111 1111 。0111 1111 首位為 0 ,代表整數。因為 0111 1111 為 127,所以”127 + 256 = 127“。
(short、int、long 型別資料溢位後規律與 byte 型別一樣)
三. int 與 Integer 的區別
(byte 與 Byte 、short 與 Short 、long 與 Long 的區別皆和 int 與 Integer 的區別類似)
int 是語言本身的最基本的型別,而 Integer 是基於 int 的一個包裝類,它有屬性及方法。
對於包裝類說,這些類的用途主要包含兩種:
a. 作為和基本資料型別對應的類型別存在,方便涉及到物件的操作。
b. 包含每種基本資料型別的相關屬性如最大值、最小值等,以及相關的操作方法。
Interger 在 java.lang 包中是這樣定義的(程式碼3):
public Integer(int value) {
throw new RuntimeException("Stub!");
}
- 1
- 2
- 3
因此在程式中建立一個 Integer 物件的方式為(程式碼4):
Integer in=new Integer(5);
- 1
- Integer 類中的欄位、方法
欄位摘要
型別 | 欄位名 | 意義 |
---|---|---|
static int | MAX_VALUE | 保持 int 型別的最大值的常量可取的值為 231-1。 |
static int | MIN_VALUE | 保持 int 型別的最小值的常量可取的值為 -231。 |
static int | SIZE | 以二進位制補碼形式表示 int 值的位數。 |
static Class | TYPE | 表示基本型別 int 的 Class 例項。 |
方法摘要
返回值型別 | 方法名(引數) | 作用 |
---|---|---|
static int | bitCount(int i) | 返回指定 int 值的二進位制補碼錶示形式的 1 位的數量。 |
byte | byteValue() | 以 byte 型別返回該 Integer 的值 |
int | compareTo(Integer anotherInteger) | 在數字上比較兩個 Integer 物件。 |
static Integer | decode(String nm) | 將 String 解碼為 Integer。 |
double | doubleValue() | 以 double 型別返回該 Integer 的值。 |
boolean | equals(Object obj) | 比較此物件與指定物件。 |
float | floatValue() | 以 float 型別返回該 Integer 的值。 |
static Integer | getInteger(String nm) | 確定具有指定名稱的系統屬性的整數值。 |
static Integer | getInteger(String nm, int val) | 定具有指定名稱的系統屬性的整數值。 |
static Integer | getInteger(String nm, Integer val) | 返回具有指定名稱的系統屬性的整數值。 |
int | hashCode() | 返回此 Integer 的雜湊碼。 |
static int | highestOneBit(int i) | 返回具有至多單個 1 位的 int 值,在指定的 int 值中最高位(最左邊)的 1 位的位置。 |
int | intValue() | 以 int 型別返回該 Integer 的值。 |
long | longValue() | 以 long 型別返回該 Integer 的值。 |
static int | lowestOneBit(int i) | 返回具有至多單個 1 位的 int 值,在指定的 int 值中最低位(最右邊)的 1 位的位置。 |
static int | numberOfLeadingZeros(int i) | 在指定 int 值的二進位制補碼錶示形式中最高位(最左邊)的 1 位之前,返回零位的數量。 |
static int | numberOfTrailingZeros(int i) | 返回指定的 int 值的二進位制補碼錶示形式中最低(“最右”)的為 1 的位後面的零位個數。 |
static int | parseInt(String s) | 將字串引數作為有符號的十進位制整數進行分析。 |
static int | parseInt(String s, int radix) | 使用第二個引數指定的基數,將字串引數解析為有符號的整數。 |
static int | reverse(int i) | 返回通過反轉指定 int 值的二進位制補碼錶示形式中位的順序而獲得的值。 |
static int | reverseBytes(int i) | 返回通過反轉指定 int 值的二進位制補碼錶示形式中位元組的順序而獲得的值。 |
static int | rotateLeft(int i, int distance) | 返回根據指定的位數迴圈左移指定的 int 值的二進位制補碼錶示形式而得到的值。 |
static int | rotateRight(int i, int distance) | 返回根據指定的位數迴圈右移指定的 int 值的二進位制補碼錶示形式而得到的值。 |
short | shortValue() | 以 short 型別返回該 Integer 的值。 |
static int | signum(int i) | 返回指定 int 值的符號函式。 |
static String | toBinaryString(int i) | 以二進位制(基數 2)無符號整數形式返回一個整數引數的字串表示形式。 |
static String | toHexString(int i) | 以十六進位制的無符號整數形式返回一個整數引數的字串表示形式。 |
static String | toOctalString(int i) | 以八進位制(基數 8)無符號整數形式返回一個整數引數的字串表示形式。 |
String | toString() | 返回一個表示該 Integer 值的 String 物件。 |
static String | toString(int i) | 返回一個表示指定整數的 String 物件。 |
static String | toString(int i, int radix) | 用第二個引數指定的基數返回第一個引數的字串表示形式。 |
static Integer | valueOf(int i) | 返回一個表示指定的 int 值的 Integer 例項。 |
static Integer | valueOf(String s) | 返回保持指定的 String 的值的 Integer 物件。 |
static Integer | valueOf(String s, int radix) | 返回一個 Integer 物件,該物件中保持了用第二個引數提供的基數進行分析時從指定的 String 中提取的值。 |
- 注:如文中有錯誤及不合理的地方,歡迎指出!