基本數據類型


Java中的基本數據類型分爲四類,整數類型,浮點類型,字符類型,布爾類型。

1),整數類型包含byte(一個字節),short(兩個字節),int(四個字節),long(8個字節)。

2),浮點類型包含float(四個字節),double(八個字節)。

3),字符類型包含char(兩個字節)。

4),布爾類型包含boolean(一般情況下八位字節)。


1,整形

通常說的整型,一般包含下面4種類型,byte(一個字節),short(兩個字節),int(四個字節),long(8個字節)。

int是最常用的整數類型,這裏要注意int的取值範圍,-2147483648->2147483647,爲了方便記憶,以後可以簡單地記:int是2開頭的10位數字

通常情況下,直接給出一個整數值默認值就是int類型。除此之外,有如下兩種情形必須指出:

1),如果直接將一個較小的整數值(在byte和short類型的表示範圍內)賦給一個byte和short變量,系統會自動把這個整數值當成byte或者short類型來處理

2),如果使用一個巨大的整數值(超過了int類型的表示範圍時),Java不會自動把這個整數值當成long類型來處理

如果希望系統把一個整數值當成long類型來處理時,應在這個整數值後增加l或者L作爲後綴,推薦使用L。

注意:可以把一個較小的整數值(在int類型的表示範圍內)直接賦給一個long類型的變量,這並不是因爲Java會把這個較小的整數值當成long類型來處理。

Java依然把這個整數值當成int類型來處理,只是因爲int類型的值會自動類型轉換到long類型。

public static void main(String[] args)
	{
		// 下面語句正確,5在byte類型範圍內,系統自動把5當成byte類型來處理。
		byte a = 5;
		// 下面語句錯誤,12345678912超出了類型的範圍(2開頭10位數字)。
		int b = 12345678912;
		// 下面語句錯誤,系統不會自動把12345678912當成long類型來處理
		long c = 12345678912;
		// 下面語句正確,long類型要在數字後面加L。
		long d = 12345678912L;
		// 下面2行語句正確,Java中的int類型會自動轉成long類型
		int e = 123;
		long f = e;
	}


2,字符型

字符型通常用於表示單個的字符,字符型值必須使用單引號括起來

Java使用16位的Unicode字符集作爲編碼方式,Unicode被設計成支持世界上所有書面語言的字符,包括中文字符,所以Java程序支持各種語言的字符。

字符型值有如下三種表示形式:

1),直接通過單個字符來指定字符型值,比如'A','9','0'等。

2),通過轉義字符表示特殊字符型值,比如'\n','\t'等。

3),直接使用Unicode值來表示字符型值,格式是'\uXXXX',其中XXXX代表一個十六進制的整數。


由於計算機底層保存字符時,實際上保存該字符對應的編號,因此char類型的值也可以直接作爲整數值來使用,它相當於一個16位的無符號整數,範圍是0->65535。

如果把0->65535範圍內的一個int整數賦給char類型變量,系統會自動把這個int整數當成char類型來處理。

public static void main(String[] args)
	{
		char charValue = '蔣';
		// 下面代碼輸出 蔣
		System.out.println(charValue);
		int intValue = charValue;
		// 下面代碼輸出 33931
		System.out.println(intValue);
	}

Java沒有提供表示字符串的基本數據類型,而是通過String類來表示字符串,由於字符串由多個字符組成,因此字符串要使用雙括號括起來

有兩點需要注意:

1),char類型使用單引號括起來,而字符串使用雙括號括起來。關於String的用法後面我會專門做整理的。

2),Java語言中的單引號,雙引號和反斜線都有特殊的用途,如果一個字符串包含了這些特殊字符,則應該使用轉義字符的表示形式。

比如Java中寫一個絕對路徑:"c:\codes"這種寫法得不到期望的結果,因爲Java會把反斜線當成轉義字符,所以應該寫成"c:\\codes"。


3,浮點型

Java的浮點類型有兩種,float和double。Java的浮點類型有固定的表數範圍和字段長度,字段長度和表數範圍與機器無關。

浮點類型包含float(四個字節)佔32位的內存空間,double(八個字節)佔64位的內存空間。

Java語言的浮點數有兩種表示形式。

1),十進制數形式:這種形式就是簡單的浮點數,比如3.1415。浮點數必須包含一個小數點,否則會被當成int類型處理。

2),科學計數法形式:比如3.14e2/3.14E2,也就是3.14*10*10,原諒我Mac不會打指數。

注意:只有浮點類型的數值纔可以使用科學計數法形式表示。比如31400是一個int類型的值,而314E2則是浮點類型的值


Java語言的浮點類型默認的是double類型,可以在一個浮點數後添加d或者D,強制指定該變量是double類型。

如果希望Java把一個浮點類型值當成float類型處理,應該在這個浮點類型值後緊跟f或者F。


Java還提供了三個特殊的浮點數值,正無窮大,負無窮大,非數,用來表示溢出和出錯。

1),正無窮大通過Double和Float類的POSITIVE_INFINITY表示,比如用一個正數除以0將得到正無窮大

2),負無窮大通過Double和Float類的NEGATIVE_INFINITY表示,比如使用一個負數除以0將得到負無窮大

3),非數通過Double和Float類的NaN表示,0除以0或者對一個負數開方將得到一個非數

有2點需要注意:

1),所有的正無窮大數值都是相等的,所有的負無窮大數值都是相等的,而NaN不與任何數值相等,甚至和NaN都不相等。

2),只有浮點數除以0纔可以得到正無窮大或負無窮大。Java語言會自動把和浮點數運算的0當成0.0處理。

如果一個整數值除以0,則會拋出一個異常,ArithmeticException:/by zero(除以0異常)。

以下代碼是JDK中Double類中正無窮大,負無窮大,非數的源碼:

public final class Double extends Number implements Comparable<Double> {
    /**
     * A constant holding the positive infinity of type
     * {@code double}. It is equal to the value returned by
     * {@code Double.longBitsToDouble(0x7ff0000000000000L)}.
     */
    public static final double POSITIVE_INFINITY = 1.0 / 0.0;

    /**
     * A constant holding the negative infinity of type
     * {@code double}. It is equal to the value returned by
     * {@code Double.longBitsToDouble(0xfff0000000000000L)}.
     */
    public static final double NEGATIVE_INFINITY = -1.0 / 0.0;

    /**
     * A constant holding a Not-a-Number (NaN) value of type
     * {@code double}. It is equivalent to the value returned by
     * {@code Double.longBitsToDouble(0x7ff8000000000000L)}.
     */
    public static final double NaN = 0.0d / 0.0;
}

現在我們輸出一下正無窮大,負無窮大,非數,看下控制檯顯示。

public static void main(String[] args)
	{
		System.out.println("正無窮大:" + Double.POSITIVE_INFINITY);
		System.out.println("負無窮大:" + Double.NEGATIVE_INFINITY);
		System.out.println("非數:" + Double.NaN);
	}
控制檯輸出如下:

正無窮大:Infinity
負無窮大:-Infinity
非數:NaN


4,布爾型

布爾型只有一個boolean類型,用來表示邏輯上的真或假。

Java中,boolean類型的數值只能是true或false,不能用0或者非0來代表,其他基本數據類型的值也不能轉換成boolean類型。

boolean類型的值或變量主要用來做旗標進行流程控制,Java語言中使用boolean類型的變量或值控制的流程主要有如下幾種:

1),if條件控制語句

2),while循環控制語句

3),do循環控制語句

4),for循環控制語句

5),(?:)三目運算符


5,數值中使用下劃線分隔

當程序中用到的數值位數特別多時,我們不容易看清楚變量到底有多少位數。

爲了解決這個問題,Java7引入了一個新功能,程序員可以在數值中使用下劃線,不管是整數數值,還是浮點型數值,都可以自由的使用下劃線。

通過下劃線,可以更直觀的分辨數值中到底包含多少位,建議3位數字用一個下劃線,比如1_234_567_890。

public static void main(String[] args)
	{
		int a = 123_456_789;
		System.out.println("使用下劃線劃開int值:" + a);
		long b = 1_234_567_890_987_654_321L;
		System.out.println("使用下劃線劃開long值:" + b);
	}



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