java基礎學習筆記(三)—— 數據類型

java基礎學習筆記(三)—— 數據類型

It comes down to a simple choice: Keep busy living or get busy dying.

| @Author:TTODS



基本數據類型

整數類型
整數類型 寬度 取值範圍
byte 1個字節(8位) -128~127
short 2個字節(16位) -215~215-1
int 4個字節 (32位) -231~231-1
long 8個字節(64位) -263~263-1
public class TypeOfData{
	public static void main(String[] args) {
		System.out.println("默認的整數類型是int類型:"+16);
		byte byteNum = 16;
		short shortNum = 16;
		int intNum  = 16;
		long longNum = 16L;	//此處可爲小寫的l但是一般寫大寫的L,因爲大寫的L更容易與數字1區分
		System.out.println("byteNum="+byteNum);
		System.out.println("shortNum="+shortNum);
		System.out.println("intNum="+intNum);
		System.out.println("longNum="+longNum);
	}
}

輸出:

默認的整數類型是int類型:16
byteNum=16
shortNum=16
intNum=16
longNum=16
浮點類型
浮點類型 寬度
float 4個字節(32位)
double 8字節(64位)
public class TypeOfData{
	public static void main(String[] args) {
		System.out.println("java 默認的浮點類型的數據是double類型:"+0.0);
		float floatNum = 0.0f;
		double doubleNum = 0.0d;
		System.out.println("floatNum="+floatNum);
		System.out.println("doubleNum="+doubleNum);
	}
}

輸出:

java 默認的浮點類型的數據是double類型:0.0
floatNum=0.0
doubleNum=0.0
數字類型的表示方法

除了上面的表示方法,常用來表示數字的方法還有進製表示法,和指數表示法

public class TypeOfData{
	public static void main(String[] args) {
		System.out.println("---數字的不同進製表示---");
		int decimalInt = 255;
		int binaryInt =  0b11111111;//0B11111111
		int octalInt = 0377;
		int hexdecimalInt = 0xFF; //0XFF
		System.out.println("decimalInt="+decimalInt);
		System.out.println("binaryInt="+binaryInt);
		System.out.println("octalInt="+octalInt);
		System.out.println("hexdeximalInt="+hexdecimalInt);
		System.out.println("---數字的指數表示法---");
		double num1 = 2.0e4;//2.0E4
		double num2 = 9.93e-2;//9.93E-2
		System.out.println("num1="+num1);
		System.out.println("num2="+num2);
		}
}

輸出:

---數字的不同進製表示---
decimalInt=255
binaryInt=255
octalInt=255
hexdeximalInt=255
---數字的指數表示法---
num1=20000.0
num2=0.0993
字符類型
字符類型 寬度
char 2個字節(16位)

字符類型表示單個字符,java中用char聲明字符類型,聲明方法如下:

char ch = 'A';//注意只能使用英文的單引號

因爲java採用雙字節的Unicode編碼,所以char類型佔兩個字節。

	public class TypeOfData{
	public static void main(String[] args) {
		char ch ='T';
		char ch1 = '\u0054'; //Unicode編碼
		char ch2 = '龍'; //Unicode編碼可支持亞洲文字(中、日、韓文等)
		System.out.println("ch="+ch);
		System.out.println("ch1="+ch1);
		System.out.println("ch2="+ch2);
		
		}
}

字符類型也屬於字符類型,可於其他的字符類型進行計算,用於計算的值就是Unicode編碼的值,取值範圍是0X0000~0XFFFF(0~216-1);

public class TypeOfData{
	public static void main(String[] args) {
		char ch ='T'; //'T'的Unicode編碼位\u0054,0X0054=84
		int num = 'T'*2;
		System.out.println("num="+num);
		}
}

輸出:

num=168
轉義字符
字符表示 Unicode編碼 說明
\t \u0009 水平製表符tab
\n \u000a 換行
\r \u000d 回車
" \u0022 雙引號
\u0027 單引號
\ \u005c 反斜線
布爾類型

在Java中聲明布爾類型的關鍵字是boolean,它只有兩個值 :true和false;
在C語言中布爾類型是數值類型,取值爲0和1;而java中boolean類型不是數值類型不能用1和0表示,也不能於其他數值類型進行運算。

數值類型的相互轉換

自動類型轉換

自動類型轉換不僅發生在賦值過程中,在進行數學計算時也會發生自動類型轉換,在運算中往往是先將數據類型轉換爲同一類型,然後再進行運算,規則如下:

操作數1 類型 操作數2 類型 轉換後類型
byte、short、char int int
byte、short、char、int long long
byte、short、char、int、long float float
byte、short、char、int、long、float double double
強制類型轉換

有時除了自動類型轉換,我們還需要用到強制類型轉換,強制類型轉換是在變量或常量之前加上"(目標類型)"實現。
例如:

		byte byteNum = 100;
		byte sum = byteNum +1;

這段代碼是無法運行的,原因是java的默認整數類型是int類型,就是說第二句代碼中的1爲int類型,計算時,byteNum被自動轉換爲了int類型,所以它們的和爲int類型,而代碼中的sum爲byte類型,java無法從int類型自動轉換爲byte類型所以報錯。這是就要用強制類型轉換。解決方法如下:

		byte byteNum = 2;
		byte sum =(byte)(byteNum + 1);
		System.out.println(sum);

輸出

3

值得注意的是當大寬度數值轉換爲小寬度數值時,大寬度數值的高位被截掉,這樣會導致數據的精度丟失(如下例)。除非大寬度數值的高位沒有數據,就是這個數比較小的情況(上面代碼就是這種情況)。

		byte byteNum = 127;
		byte byteSum = (byte)(byteNum+1);
		System.out.println(byteSum);

輸出

-128;

解釋如下:

上面計算的二進制形式如下(int類型)
	00000000 00000000 00000000 01111111
+	00000000 00000000 00000000 00000001
-------------------------------------------
	00000000 00000000 00000000 10000000
得到的結果是0b00000000000000000000000010000000,int類型,轉化爲10進制是128;
然後進行強制類型轉換,截取int類型的最後8位,爲0b10000000,但是又因爲java中所
有的數值類型都是有符號類型,byte的第一位爲符號位,因此得出的值爲-128,計算機
內的二進制存取和運算不是一兩句話能說清的。

引用數據類型(待完善)

在java中除了8中基本數據類型外,其他數據類型都是引用(reference)數據類型,引用數據類型用來表示複雜數據類型,即包含類、接口和數組聲明的數據類型。java中的引用數據類型相當於C等語言的指針(pointer)類型,引用事實上就是指針,是指向一個對象的內存地址。

問題:

問題一:

爲什麼long 類型,float和double的數據要分別在後面加上字母"L",“f"和"d”?

問題二:

爲什麼數值的指數表示法是double類型?

- THE END -
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章