真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中基本數(shù)據(jù)類型分別有哪些

這篇文章主要為大家展示了“java中基本數(shù)據(jù)類型分別有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“java中基本數(shù)據(jù)類型分別有哪些”這篇文章吧。

10余年的青山湖網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整青山湖建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“青山湖網(wǎng)站設(shè)計”,“青山湖網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

八種基本數(shù)據(jù)類型分別是:1、4種整數(shù)類型(byte、short、int、long);2、2種浮點類型(float、double);3、1種字符類型“char”;4、1種布爾類型“boolean”。

本教程操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。

8種基本數(shù)據(jù)類型

java中有8種基本數(shù)據(jù)類型, 分別用于存儲整數(shù)、浮點數(shù)、字符數(shù)據(jù)和布爾類型數(shù)據(jù)。需要注意的是: 現(xiàn)在所介紹的僅僅是基本數(shù)據(jù)類型,后續(xù)還會介紹很多非基本數(shù)據(jù)類型?;緮?shù)據(jù)類型如圖 – 1所示:

java中基本數(shù)據(jù)類型分別有哪些

圖- 1

從圖- 1中可以看出, 基本數(shù)據(jù)類型主要分為4大類 (整數(shù)類型、浮點類型、char、boolean), 整數(shù)類型又分為了4小類(byte、short、int、long), 浮點類型也分了2小類(float、double),這些數(shù)據(jù)類型的區(qū)別是怎樣的?通過圖– 2展示了這8種數(shù)據(jù)類型的存儲空間及使用場景:

java中基本數(shù)據(jù)類型分別有哪些

圖- 2

在如上這8種數(shù)據(jù)類型中,最常用的有5種,分別為int、long、double、char、boolean。其余的數(shù)據(jù)類型幾乎不用,要求對這5種基本數(shù)據(jù)類型重點掌握,其余的數(shù)據(jù)類型,有興趣了解就可以了。

2. int類型

2.1. int類型

int是最常用的整數(shù)類型,一個int類型的變量占用4個字節(jié),即32位的內(nèi)存空間。Int的最大表示范圍為:-231~231-1,即-2147483648 ~2147483647,大約正負(fù)21個億多些。

2.2. 整數(shù)直接量是int類型

所謂整數(shù)直接量(literal)就是直接寫出的整數(shù),例如:下面的語句中,100就是直接量。

int a = 100;
int a = 100;

關(guān)于整數(shù)直接量,需要注意如下要點:

整數(shù)的直接量的類型默認(rèn)為int類型,如果直接寫出的整數(shù)超過了int的表達(dá)范圍,將會出現(xiàn)編譯錯誤,下面的語句,就是因為超出了整數(shù)的范圍而導(dǎo)致的編譯錯誤。

int d = 10000000000; // 編譯錯誤10000000000這個數(shù)值寫出來就是錯誤的,因為Java認(rèn)為所有直接寫出的整數(shù)都是int類型,而這個數(shù)值超過了int的表達(dá)范圍。
int d = 10000000000; // 編譯錯誤10000000000這個數(shù)值寫出來就是錯誤的,因為Java認(rèn)為所有直接寫出的整數(shù)都是int類型,而這個數(shù)值超過了int的表達(dá)范圍。

除了通常的十進制數(shù)字形式,整數(shù)直接量也可以寫成16進制的形式(以0X或0x開頭)或8進制的形式(以0開頭),請看如下直接量三種表現(xiàn)形式:

int a = 100000; // 10進制 
int b = 0x186a0; // 16進制 
int c = 0303240; // 8進制 
int a = 100000; // 10進制
int b = 0x186a0; // 16進制
int c = 0303240; // 8進制

2.3. 整型數(shù)據(jù)除法運算中的取整

若對兩個整數(shù)相除,會舍棄小數(shù)的部分(注意:不是四舍五入),結(jié)果也是整數(shù)。示例代碼如下所示:

int c = 5/3;
System.out.println(c);  // c的值為1,取整
int total = 87;    
int error = 23;
int percent = error / total * 100;
System.out.println(percent+"%");  //結(jié)果為0%,23除以87整數(shù)部分為0,乘以100,為0 
percent = 100 * error / total;
System.out.println(percent + "%");  // 結(jié)果為26%,230除以87整數(shù)部分為26 
int c = 5/3;
System.out.println(c);  // c的值為1,取整
int total = 87;    
int error = 23;
int percent = error / total * 100;
System.out.println(percent+"%");  //結(jié)果為0%,23除以87整數(shù)部分為0,乘以100,為0
 
percent = 100 * error / total;
System.out.println(percent + "%");  // 結(jié)果為26%,230除以87整數(shù)部分為26

2.4. 運算時要防止溢出的發(fā)生

當(dāng)兩個整數(shù)進行運算時, 其結(jié)果可能會超過整數(shù)的范圍而發(fā)生溢出,正數(shù)過大而產(chǎn)生的溢出,結(jié)果為負(fù)數(shù);負(fù)數(shù)過大而產(chǎn)生的溢出,結(jié)果為正數(shù)。示例代碼如下所示:

int a = 2147483647;    //int類型整數(shù)的上限
int b = -2147483648;    //int類型整數(shù)的下限
a = a + 1;
b = b - 1;
System.out.println("a=" + a);    //輸出結(jié)果: a=-2147483648 溢出,結(jié)果錯誤。 
System.out.println("b=" + b);    //輸出結(jié)果: b=2147483647溢出,結(jié)果錯誤。 
int a = 2147483647;    //int類型整數(shù)的上限
int b = -2147483648;    //int類型整數(shù)的下限
a = a + 1;
b = b - 1;
System.out.println("a=" + a);    //輸出結(jié)果: a=-2147483648 溢出,結(jié)果錯誤。
System.out.println("b=" + b);    //輸出結(jié)果: b=2147483647溢出,結(jié)果錯誤。

3. long類型

3.1. long類型

在表示整數(shù)時,如果int類型的范圍不夠,可以使用long類型,一個long型的變量占用8個字節(jié)(即64位),最大表示范圍為:-263 ~ 263-1,即 -9223372036854775808 ~ 9223372036854775807。

如果要表示long直接量,需要以 L 或 l 結(jié)尾。示例代碼如下:

long a = 10000000000;   //會有編譯錯誤,因為10000000000編譯器認(rèn)為是int類型,而這個值,已經(jīng)超出了int的范圍
long b = 10000000000l;   //正確
long a = 10000000000;   //會有編譯錯誤,因為10000000000編譯器認(rèn)為是int類型,而這個值,已經(jīng)超出了int的范圍
long b = 10000000000l;   //正確

3.2. 使用long類型進行較大整數(shù)的運算

對于較大的整數(shù)運算(超過int的表達(dá)范圍),可以使用long型。示例代碼如下:

long distance1 = 10000 * 365 * 24 * 60 * 60 * 299792458l;  
//必須有一個long型數(shù)據(jù)參與的運算結(jié)果才是long型 
System.out.println("distance1="+distance1);//distance1=547836957965889536 結(jié)果正確 
long distance2 = 10000 * 365 * 24 * 60 * 60 * 299792458; 
System.out.println("distance2="+ distance2);  //distance2=-1973211136 溢出,=號后面的數(shù)據(jù)默認(rèn)為int類型,超出了范圍,發(fā)生溢出。
long distance1 = 10000 * 365 * 24 * 60 * 60 * 299792458l;  
//必須有一個long型數(shù)據(jù)參與的運算結(jié)果才是long型
System.out.println("distance1="+distance1);//distance1=547836957965889536 結(jié)果正確
 
long distance2 = 10000 * 365 * 24 * 60 * 60 * 299792458;
System.out.println("distance2="+ distance2);  //distance2=-1973211136 溢出,=號后面的數(shù)據(jù)默認(rèn)為int類型,超出了范圍,發(fā)生溢出。

3.3. 通過時間毫秒數(shù)來存儲日期和時間

JDK提供 System.currentTimeMillis() 方法,返回1970年1月1日零點到此時此刻所經(jīng)歷的毫秒數(shù),數(shù)據(jù)太大,故其數(shù)據(jù)類型為long。示例代碼如下:

long time = System.currentTimeMillis();
System.out.println(time);     //輸出的結(jié)果為: 1383835712828
long time = System.currentTimeMillis();
System.out.println(time);     //輸出的結(jié)果為: 1383835712828

通過上面的代碼可以看出,輸出的結(jié)果已經(jīng)超出int類型的最大值,因此,JDK設(shè)計的返回類型為long型,該方法常常被用于計時操作。

4. double類型

4.1. 使用double進行浮點數(shù)的運算

前面所學(xué)習(xí)的int、long都是用于存儲整數(shù)的,小數(shù)即為浮點數(shù),包括: float(單精度)和double(雙精度),double類型的精度值是float類型的兩倍,因此而得名雙精精,在實際的應(yīng)用開發(fā)中,float應(yīng)用極少,大多數(shù)場合使用double表示浮點數(shù)。示例代碼如下:

double pi = 3.14;
double r = 8;
double s = pi * r * r;
System.out.println("s=" + s);   // 輸出的結(jié)果為:s=200.96
double pi = 3.14;
double r = 8;
double s = pi * r * r;
System.out.println("s=" + s);   // 輸出的結(jié)果為:s=200.96

4.2. 浮點數(shù)直接量是double類型

浮點數(shù)的直接量有兩種寫法:1)通常寫法,如:3.14、314、0.1、.5。 2)科學(xué)計數(shù)法,如:1.25E2、1.25e2、1.25E-2。其中,1.25E2表示1.25乘以10的2次方。

默認(rèn)的浮點直接量為double型,如果需要表示float類型的直接量,需要加“f”或“F”后綴。例如:

float f1 = 3.14   //編譯錯誤,應(yīng)該寫成3.14f
float f1 = 3.14   //編譯錯誤,應(yīng)該寫成3.14f

4.3. double運算時會出現(xiàn)舍入誤差

2進制系統(tǒng)中無法精確的表示1/10,就好像十進制系統(tǒng)中無法精確的表示1/3一樣,

所以,2進制表示10進制會有一些舍入誤差,對于一些要求精確運算的場合會導(dǎo)致代碼的缺陷。示例代碼如下所示:

double money = 3.0; 
double price = 2.9; 
System.out.println(money - price);   //輸出的結(jié)果是: 0.10000000000000009 
double money = 3.0;
double price = 2.9;
System.out.println(money - price);   //輸出的結(jié)果是: 0.10000000000000009

如果需要精確的運算可以考慮放棄使用double或float而采用BigDecimal 類來實現(xiàn)。關(guān)于這一點,將在后續(xù)的章節(jié)中介紹。

5. char類型

5.1. char類型

字符類型char事實上是一個16位無符號整數(shù)(都是正數(shù)),這個值是對應(yīng)字符的編碼,Java字符類型采用Unicode字符集編碼(通用碼、統(tǒng)一碼、萬國碼),而Unicode是世界通用的定長字符集,所有的字符都是16位來表示。例如:字符a實際的值為97,字符A實際的值為65,字符0實際的值為48。

字符直接量可以采用諸如:‘中’的形式,也可以采用16進制的表示形式,例如: ‘\u4e2d’,代碼如下所示:

char c1 = ‘中’;   //c1中存的是”中”的編碼 
char c2 = '\u4e2d';   //‘4e2d’為‘中’所對應(yīng)的16位Unicode編碼的16進制表示形式
System.out.println(c1);
System.out.println(c2);
char c1 = ‘中’;   //c1中存的是”中”的編碼
char c2 = '\u4e2d';   //‘4e2d’為‘中’所對應(yīng)的16位Unicode編碼的16進制表示形式
System.out.println(c1);
System.out.println(c2);

如上代碼的輸出結(jié)果:c1的值為中,c2值也為中,但c1和c2內(nèi)部存儲的其實是”中”這個字符所對應(yīng)的Unicode碼,即:一個無符號的整數(shù)。

5.2. 對char型變量賦值

在對char型變量賦值時,可以采用如下三種方式:

方式一:

字符直接量:形如‘A’,變量中實際存儲的是該字符的Unicode編碼(無符號整數(shù)值),一個char型變量只能存儲一個字符。示例如下:

char c1 = 'A';   
char c1 = 'A';

方式二:

整型直接量:范圍在0~65535之間的整數(shù),變量中實際存儲的即該整數(shù)值,但表示的是該整數(shù)值所對應(yīng)的Unicode字符。示例如下:

char c2 = 65;    
char c2 = 65;

Unicode形式:形如‘\u0041’,Unicode字符的16進制形式。示例如下:

char c3 = '\u0041'; 
char c3 = '\u0041';

5.3. 使用轉(zhuǎn)義字符

字符直接量需要包含在一對’’單引號之中,那如果想表示單引號’的字符時,需要怎么表示?想表示回車、換行符時,怎么表示?

因為單引號為特殊意義的字符, 那么,對于不方便輸出的字符可以采用轉(zhuǎn)義字符來表示,示例代碼如下:

char c = '\\';
System.out.println(c);  //輸出的結(jié)果為:\ 
char c = '\\';
System.out.println(c);  //輸出的結(jié)果為:\

常用轉(zhuǎn)義字符如下圖 – 2所示:

java中基本數(shù)據(jù)類型分別有哪些

圖- 2

6. boolean類型

6.1. 使用boolean變量進行關(guān)系運算

boolean類型適用于關(guān)系、邏輯運算, 表示某個條件是否成立, 只允許取值true或false,true表示條件成立, 而false表示條件不成立。

boolean型變量經(jīng)常用于存儲關(guān)系運算的結(jié)果,所謂關(guān)系運算就是比較兩個變量的大小相等等關(guān)系(此知識點,后續(xù)詳細(xì)介紹)。boolean示例代碼如下所示:

int age = 18;
boolean isChild = age<16;  
System.out.println(isChild);   // isChild的值為false
boolean running = true; 
boolean closed = false; 
int age = 18;
boolean isChild = age<16;  
System.out.println(isChild);   // isChild的值為false
boolean running = true;
boolean closed = false;

7. 基本類型間轉(zhuǎn)換

7.1. 類型間轉(zhuǎn)換

不同的基本類型直接可以相互轉(zhuǎn)化,主要有兩種方式:

自動類型轉(zhuǎn)化(隱式類型轉(zhuǎn)換):從小類型到大類型可以自動完成。類型的大小關(guān)系如下圖 - 3所示:

java中基本數(shù)據(jù)類型分別有哪些

圖- 3

強制轉(zhuǎn)化:從大類型到小類型需要強制轉(zhuǎn)換符,語法如下:

(需要轉(zhuǎn)換成的類型)變量

因為大類型的精度值大于小類型,取值范圍大于小類型,所以,當(dāng)使用強制轉(zhuǎn)化時,有可能會造成精度的損失或者溢出,所以,在使用強制轉(zhuǎn)化時要求顯式的告訴編譯器,正在進行強制轉(zhuǎn)換。

7.2. 強制轉(zhuǎn)換時的精度喪失和溢出

基本類型轉(zhuǎn)化如下示例所示,注意強制轉(zhuǎn)換時可能會造成的精度喪失和溢出。

int a = 100;
int b = 200;
long c = a + b;  //自動將int轉(zhuǎn)化為long 
long l1 = 1024l; 
int i = (int) l1;  //需要加強制轉(zhuǎn)化符由于1024在int的范圍內(nèi),所以沒有產(chǎn)生溢出 
long l = 1024L * 1024 * 1024 * 4;
int j = (int) l;    //會產(chǎn)生溢出
System.out.println(j);  // 結(jié)果為:0 
double pi = 3.1415926535897932384;
float f = (float) pi;   //會造成精度的損失,因為單精度的精確度小于double
System.out.println(f);  //結(jié)果為:3.1415927 
int a = 100;
int b = 200;
long c = a + b;  //自動將int轉(zhuǎn)化為long
 
long l1 = 1024l;
int i = (int) l1;  //需要加強制轉(zhuǎn)化符由于1024在int的范圍內(nèi),所以沒有產(chǎn)生溢出
 
long l = 1024L * 1024 * 1024 * 4;
int j = (int) l;    //會產(chǎn)生溢出
System.out.println(j);  // 結(jié)果為:0
 
double pi = 3.1415926535897932384;
float f = (float) pi;   //會造成精度的損失,因為單精度的精確度小于double
System.out.println(f);  //結(jié)果為:3.1415927

7.3. 數(shù)值運算時的自動轉(zhuǎn)換

如果在一個表達(dá)式中出現(xiàn)了多種數(shù)據(jù)類型,則運算結(jié)果會自動的向較大的類型進行轉(zhuǎn)化,

示例如下:

//由于有l(wèi)ong型的直接量參與,整個表達(dá)式的結(jié)果為long 
long distance = 10000 * 365 * 24 * 60 * 60 * 299792458l;
 
//由于有double型的直接量599.0參與,整個表達(dá)式的結(jié)果為 double 
double change = 800 - 599.0;
    
//結(jié)果為0.0,右邊都是int型數(shù)據(jù)運算結(jié)果也為int類型,結(jié)果為0,再賦值給double
將0轉(zhuǎn)化為 0.0
double persent1 = 80 / 100;  
//結(jié)果為0.8,右邊表達(dá)式有double型直接量參與, 運算結(jié)果為double型
double persent2 = 80.0 / 100;  
//由于有l(wèi)ong型的直接量參與,整個表達(dá)式的結(jié)果為long
long distance = 10000 * 365 * 24 * 60 * 60 * 299792458l;
 
//由于有double型的直接量599.0參與,整個表達(dá)式的結(jié)果為 double
double change = 800 - 599.0;
    
//結(jié)果為0.0,右邊都是int型數(shù)據(jù)運算結(jié)果也為int類型,結(jié)果為0,再賦值給double
型,將0轉(zhuǎn)化為 0.0
double persent1 = 80 / 100;
    
//結(jié)果為0.8,右邊表達(dá)式有double型直接量參與, 運算結(jié)果為double型
double persent2 = 80.0 / 100;

7.4. byte、char、short轉(zhuǎn)換為int

在前面所介紹的8種數(shù)據(jù)類型中,byte、char、short、int、long都表示整數(shù)類型,而整型的直接量為int,在實際使用中,為了方便使用,遵循了如下的規(guī)則:

int直接量可以直接賦值給byte、char和short,只要不超過其表示范圍。示例如下:

byte  b  = 97;
short  s  = 97;
char  c  = 97;
byte  b  = 97;
short  s  = 97;
char  c  = 97;

byte、char、short三種類型參與運算時,先一律轉(zhuǎn)換成int類型再進行運算。示例如下:

byte  b  =  97;
int  num = b + b;   //num的值為194

以上是“java中基本數(shù)據(jù)類型分別有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站欄目:java中基本數(shù)據(jù)類型分別有哪些
分享網(wǎng)址:http://weahome.cn/article/jeejci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部