Java中的數據類型:原始和非原始數據類型
已發表: 2020-12-01目錄
介紹
在任何編程語言中,數據類型都是數據的歸屬,它讓計算機或編譯器知道程序員想要如何分配數據。 數據類型在賦值時對變量或函數添加了限制。
這些數據類型定義了數據的行為,例如可以存儲該類型值的方式以及可以對數據執行的操作。 讓我們看看java提供的所有數據類型。
原始數據類型
原始數據類型不能進一步拆分為更簡單的數據類型。 Java 提供了 8 種原始數據類型,讓我們來探索一下!
字節
字節是一種整數類型,它存儲從 -128 到 127 的整數,如果您處理小數字,這可以解決內存限制問題,因為它只需要 1 個字節的內存。 可以使用“byte”關鍵字聲明字節變量。 將高於 127 的值分配給字節會引發“不兼容類型”錯誤。
字節n1 = 98 ; 系統。 出來。 打印(n1); |
上面的代碼片段按預期打印 98。
短的
short 是一種整數類型,它存儲從 -32768 到 32767 的整數,它從磁盤消耗 2 個字節的內存。 可以使用“short”關鍵字聲明一個短變量。 將大於 32767 的值分配給短變量會引發“類型不兼容”錯誤。

短n1 = 9876 ; 系統。 出來。 打印(n1); |
上面的代碼段打印 9876 作為輸出。
詮釋
int 是一個整數類型,存儲範圍從 -2147483648 到 2147483647 的整數,它在磁盤中消耗 4 個字節的內存。 通常,程序員更喜歡使用 int 來聲明存儲數值的變量。 如果嘗試分配大於範圍的值,Java 編譯器會拋出“不兼容類型”錯誤。
詮釋n1 = 987654 ; 系統。 出來。 打印(n1); |
上面的代碼段打印 987654 作為輸出。
長
現在,這是一種有趣的數據類型,它消耗磁盤中的 8 字節內存。 它是一個整數類型,存儲範圍從 -9223372036854775808 到 9223372036854775807 的整數,需要花費大量時間來讀取該範圍。
這在我們執行的操作的 int 數據類型溢出時使用。 請記住,我們需要在分配時以“L”結束值。
長n1 = 987654321098765L ; 系統。 出來。 打印(n1); |
如預期的那樣,上面的代碼段打印 987654321098765。
漂浮
Float 是一種浮點數據類型,這意味著它可以存儲包括十進制精度在內的值。 讓我們假設您已經開發了一個代碼來記錄您的所有支出,但是您非常嚴格並且想要跟踪您花費的每一分錢。 在這種情況下, int 將無法完成這項工作,因為 int 只能存儲整數。
我們需要一個浮點數據類型來完成這個任務。 一個浮點數可以存儲從 3.4e-038 到 3.4e+038 範圍內的小數,它最多可以存儲 7 位小數精度。 請記住,您應該以“f”結束該值。
浮動n = 98.76f ; 系統。 出來。 打印(n); |
上面的代碼段打印 98.76 作為輸出。
閱讀: JavaBeans 屬性和優勢:您應該如何利用?
雙倍的
Double 類似於浮點數,但顧名思義,在十進制精度的情況下,它是浮點數的兩倍。 它可以有 15 位的十進制精度,可以存儲從 1.7e-308 到 1.7e+308 的小數。 請記住,您必須以“d”結束值。
讓我們通過一段代碼來了解 float 和 double 之間的區別。
公共類測試{ 公共靜態無效主要(字符串args []) { 浮動a1 = 1.f / 70 ; 浮動b1 = 0 ; 雙a2 = 1.d / 70 ; 雙b2 = 0 ; 浮動f1 = 1f ; 雙f2 = 1d ; for ( int i = 0 ;i < 490 ;i ++ ){ b1 = b1 + a1; b2 = b2 + a2; 如果(i > 1 && i <= 50 ){ ![]() f1 = f1 * i; f2 = f2 * i; } } 系統。 出來。 println(b1); //第1行 系統。 出來。 println(b2); //第2行 系統。 出來。 打印(f1); //第3行 系統。 出來。 打印(f2); //第4行 } } |
手動計算表達式“(1/70)*490”給出了 7 作為答案,但是在 java 中使用 float 和 double 執行它會給出不同的答案。 在上面的代碼片段中,一個 float 變量和一個 double 變量被初始化為 1/70,並且將此值添加到另一個變量 490 次應該得到 7 作為答案。
在運行上述代碼段時,第 1 行打印 6.9999795 具有 7 位十進制精度,而第 2 行打印 6.999999999999978 具有 15 位十進制精度。 因此,如果浮點數不能為您提供準確的小數精度,那麼您可以選擇雙精度。 此外,float 更有可能達到無窮大,因為與 double 相比,float 的範圍更小。
例如,如果您存儲一個相當大的數字的階乘,那麼該變量將達到無窮大。 從上面的代碼片段中,我們可以看到有兩個變量用於存儲 50 的階乘,在我們打印結果時,第 3 行打印無窮大,第 4 行打印 3.0414093201713376E64,所以如果浮點數不符合您的數值範圍然後您可以選擇雙倍。
float 和 double 都可以用作帶有 'e' 的科學數字,其中 'e' 表示 10 的冪。例如,3e2f 等價於 float 數據類型的 300.0,3e4d 等價於 double 數據類型的 30000.0。
布爾值
布爾數據類型只能取真假兩個值,在java中使用boolean關鍵字聲明。 這種數據類型通常用作標記變量,用於跟踪我們在代碼中所做的更改。 例如,如果一個數字可以被 2 整除,則將該標誌設置為 true,否則設置為 false。
布爾標誌= true ; 布爾b1 =假; 系統。 出來。 打印(標誌); //打印為真 系統。 出來。 println(b1); //打印錯誤 |
字符
char 數據類型用於存儲單個字符,該數據類型可以使用 char 關鍵字聲明。 請記住,我們必須在分配時將字符括在單引號中,它可以將小寫和大寫字符存儲在 char 數據類型中。
在 char 數據類型中存儲多個字符會引發錯誤。 此外,關於 char 數據類型還有一個有趣的事實,即,將 char 類型轉換為整數會存儲該字符的 ASCII 值,反之亦然。
字符c1 = ' a ' ; 字符c2 = 66 ; 系統。 出來。 打印(C1); //第1行 系統。 出來。 打印(c2); //第2行 系統。 出來。 println(( int )c1); //第3行 |
在上面的代碼段第 1 行中,按預期打印“a”作為輸出。 第 2 行打印 'B' 作為輸出,因為 66 指的是 ASCII 表中的 B。 第 3 行打印 97 作為輸出,因為它是 'a' 的 ASCII 值。
但是如果我們想要存儲多個字符呢? 我們將在接下來的段落中討論它們。
另請閱讀:初學者的 17 個有趣的 Java 項目想法和主題
非原始數據類型
java中的非原始數據類型也稱為引用類型,因為它們引用對象。 非原始數據類型是由程序員創建的,它們不是預定義的。 由於非基元被稱為對象,因此可以為它們分配 null,這在基元類型中不是這種情況。
與原始數據類型不同,非原始數據類型必須以大寫字母開頭。 所有非原始數據類型的大小都相同,並且在磁盤上消耗相同的內存,這在原始數據類型的情況下是不同的。
細繩
字符串是 java 中的一種特殊數據類型,它與程序員定義非原始類型的事實相矛盾。 字符串數據類型是一種非原始數據類型但在java中是預定義的,也有人稱其為特殊的第九原始數據類型。
這解決了一個char不能存儲多個字符的情況,使用字符串數據類型來存儲字符序列。 請記住,您需要將文本序列括在雙引號中。
字符串s1 = “你好” ; 系統。 出來。 println(s1); |
上面的代碼片段將按預期打印“Hey There”。
數組、類、接口等是 java 中很少有的其他非原始數據類型。
如何計算數據類型的範圍?
看過原始數據類型的範圍後,您可能會懷疑我們是否需要記住這一點? 好吧,答案是否定的。 但是我們需要記住每種數據類型的大小,然後我們才能計算出該數據類型的範圍。
例如,字節數據類型占用磁盤上 1 個字節的內存。 在編譯器級別,所有數據都以位的形式存儲,一個字節有 8 位。 現在 8 位中的一位用於指定數字的符號,其餘 7 位可以存儲實際數字,所以我們使用 7 位可以存儲的最大數字是 128。
因此,-128 是字節數據類型的下限,+127 是上限,因為零是負數之後數軸上的第一個數字。
同樣在浮點類型中,數據被分成 3 部分有符號位、尾數和指數。 尾數部分用於存儲十進制精度,float 有 23 個尾數位加一個隱藏位,double 有 52 個尾數位加一個隱藏位。
對於浮點數,log(2^24)/log(10) 大約等於 7,因此 7 位十進制精度。
對於雙精度,log(2^53)/log(10) 大約等於 15,因此 15 位十進制精度。

報名參加世界頂尖大學的軟件工程課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
結論
我們已經看到了 java 中的各種數據類型,了解了原始數據類型和非原始數據類型,原始數據類型和非原始數據類型的區別。 通過示例代碼片段了解數據類型聲明的基本知識。
了解瞭如何計算整數數據類型的各種數據類型的範圍,如何計算浮點數據類型的小數精度。
現在您已經了解了 java 中的各種數據類型,開始探索它們吧!
如果您有興趣了解有關 Java、OOP 和全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,並提供 500 多個小時的嚴格培訓, 9 個以上的項目和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。
