更新時間:2022-07-28 10:42:46 來源:動力節(jié)點 瀏覽1041次
Java 中定義的八個原語是int、byte、short、long、float、double、boolean 和char。這些不被視為對象并代表原始值。
它們直接存儲在Java堆棧中。
我們要介紹的第一個原始數(shù)據(jù)類型是int。也稱為整數(shù),int類型包含范圍廣泛的非小數(shù)數(shù)值。
具體來說,Java 使用 32 位內(nèi)存來存儲它。換句話說,它可以表示從 -2,147,483,648 (-2 31 ) 到 2,147,483,647 (2 31 -1) 的值。
在 Java 8 中,可以通過使用新的特殊輔助函數(shù)來存儲最大為 4,294,967,295 (2 32 -1)的無符號整數(shù)值。
我們可以簡單地聲明一個int:
int x = 424_242;
int y;
在沒有賦值的情況下聲明的int的默認值為0。
如果變量是在方法中定義的,我們必須先賦值才能使用它。
我們可以對int執(zhí)行所有標(biāo)準(zhǔn)算術(shù)運算。請注意,在對整數(shù)執(zhí)行這些操作時,十進制值將被截斷。
byte是一種類似于int的原始數(shù)據(jù)類型,只是它只占用 8 位內(nèi)存。這就是我們稱之為字節(jié)的原因。因為內(nèi)存太小了,byte只能保存 -128 (-2 7 ) 到 127 (2 7 – 1) 的值。
以下是我們?nèi)绾蝿?chuàng)建byte:
byte b = 100;
byte empty;
byte的默認值也是 0。
我們的 Java 原始數(shù)據(jù)類型列表的下一站是short。
如果我們想節(jié)省內(nèi)存并且byte太小,我們可以使用介于byte和int之間的類型:short。
在 16 位內(nèi)存中,它是int大小的一半,是byte大小的兩倍。它的可能值范圍是 -32,768(-2 15 ) 到 32,767(2 15 – 1)。
short聲明如下:
short s = 20_020;
short s;
也與其他類型類似,默認值為 0。我們也可以在其上使用所有標(biāo)準(zhǔn)算術(shù)。
我們最后一個與整數(shù)相關(guān)的原始數(shù)據(jù)類型是long。
long是int的大哥。它存儲在 64 位內(nèi)存中,因此它可以保存更大的可能值集。
long 的可能值介于 -9,223,372,036,854,775,808 (-2 63 ) 到 9,223,372,036,854,775,807 (2 63 – 1) 之間。
我們可以簡單地聲明一個:
long l = 1_234_567_890;
long l;
與其他整數(shù)類型一樣,默認值也是 0。我們可以在long上使用所有適用于int的算術(shù)。
我們使用浮點類型表示 Java 中的基本小數(shù)。這是一個單精度十進制數(shù)。這意味著,如果我們超過了小數(shù)點后六位,這個數(shù)字就會變得不那么精確,而更像是一個估計值。
在大多數(shù)情況下,我們并不關(guān)心精度損失。但是如果我們的計算需要絕對的精度(例如金融操作、登月等),我們需要使用為這項工作設(shè)計的特定類型。有關(guān)更多信息,請查看 Java 類Big Decimal。
這種類型與int一樣存儲在 32 位內(nèi)存中。但是,由于是浮點數(shù),它的范圍有很大的不同。它可以表示正數(shù)和負數(shù)。最小的小數(shù)是 1.40239846 x 10 -45,最大值是 3.40282347 x 10 38。
我們聲明float與任何其他類型相同:
float f = 3.145f;
float f;
默認值為 0.0 而不是 0。另外,請注意我們將f指定添加到文字數(shù)字的末尾以定義浮點數(shù)。否則,Java 將拋出錯誤,因為十進制值的默認類型是double。
我們還可以對float執(zhí)行所有標(biāo)準(zhǔn)算術(shù)運算。然而,重要的是要注意我們執(zhí)行浮點運算與整數(shù)運算非常不同。
接下來,我們看一下double。它的名字來源于它是一個雙精度十進制數(shù)。
它存儲在 64 位內(nèi)存中。這意味著它代表的可能數(shù)字范圍比float大得多。
雖然,它確實受到與float相同的精度限制。范圍是 4.9406564584124654 x 10 -324到 1.7976931348623157 x 10 308。該范圍也可以是正數(shù)或負數(shù)。
聲明double與其他數(shù)字類型相同:
double d = 3.13457599923384753929348D;
double d;
與float一樣,默認值也是 0.0 。與浮點數(shù)類似,我們附加字母D以將文字指定為雙精度數(shù)。
最簡單的原始數(shù)據(jù)類型是boolean。它只能包含兩個值:true或false。它將其值存儲在一個位中。
然而,為方便起見,Java 填充該值并將其存儲在單個字節(jié)中。
以下是我們聲明boolean的方式:
boolean b = true;
boolean b;
在沒有值的情況下聲明它默認為false。布爾值是控制我們的程序流的基石。我們可以對它們使用布爾運算符(例如,和,或,等等)。
最后要查看的原始數(shù)據(jù)類型是char。
char也稱為字符,是一個 16 位整數(shù),表示 Unicode 編碼的字符。它的范圍是從 0 到 65,535。在 Unicode 中,這表示'\u0000'到'\uffff'。
有關(guān)所有可能的 Unicode 值的列表,請查看Unicode Table等網(wǎng)站。
現(xiàn)在讓我們聲明一個char:
char c = 'a';
char c = 65;
char c;
在定義變量時,我們可以使用任何字符文字,它們會自動轉(zhuǎn)換為我們的 Unicode 編碼。字符的默認值為'/u0000'。
原始數(shù)據(jù)類型有大小限制。但是如果我們嘗試存儲一個大于最大值的值會發(fā)生什么?
我們遇到了一種叫做溢出的情況。
當(dāng)整數(shù)溢出時,它會翻轉(zhuǎn)到最小值并從那里開始向上計數(shù)。
浮點數(shù)通過返回 Infinity 溢出:
int i = Integer.MAX_VALUE;
int j = i + 1;
// j will roll over to -2_147_483_648
double d = Double.MAX_VALUE;
double o = d + 1;
// o will be Infinity
下溢是同樣的問題,只是它涉及存儲一個小于最小值的值。當(dāng)數(shù)字下溢時,它們返回 0.0。
每個原始數(shù)據(jù)類型還具有可以包裝它的完整 Java 類實現(xiàn)。例如,Integer類可以包裝一個int。有時需要從原始類型轉(zhuǎn)換為其對象包裝器(例如,將它們與泛型一起使用)。
幸運的是,Java 可以自動為我們執(zhí)行這種轉(zhuǎn)換,這個過程稱為Autoboxing:
Character c = 'c';
Integer i = 1;
以上就是關(guān)于“八大基本數(shù)據(jù)類型”的介紹,大家如果對此比較感興趣,想了解更多相關(guān)知識,可以關(guān)注一下Java的數(shù)據(jù)類型介紹,里面有更豐富的知識等著大家去學(xué)習(xí),相信對大家一定會有所幫助的。
初級 202925
初級 203221
初級 202629
初級 203743