《Java架構(gòu)筑基》從Java基礎(chǔ)講起——基本數(shù)據(jù)類型-創(chuàng)新互聯(lián)

1. 基本類型有哪些

Java定義了八種基本數(shù)據(jù)類型:byte,short,int,long,char,float,double,boolean。

成都創(chuàng)新互聯(lián)是專業(yè)的大廠網(wǎng)站建設(shè)公司,大廠接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行大廠網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
  • 基本數(shù)據(jù)類型也稱為簡單類型,這些類型可以分為四組:
    • 整型。包括byte,short,int,long。用于表示有符號整數(shù)。
    • 浮點(diǎn)型。包括float,double。用于表示帶小數(shù)位的數(shù)字。
    • 字符型。包括char。用于表示字符集中的符號。
    • 布爾型。包括boolean。用于表示true/false值。
  • 開發(fā)者可以直接使用這些類型,也可以使用它們來構(gòu)造數(shù)組以及自定義類型。因此,它們形成了所有可以創(chuàng)建的其他類型的基礎(chǔ)。Java在其他方面是完全面向?qū)ο蟮?,但基本?shù)據(jù)類型并不是面向?qū)ο蟮?,這樣設(shè)計的原因是為了效率。將基本數(shù)據(jù)類型設(shè)計為對象會極大地降低性能。
  • 因?yàn)镴ava語言的特色其中一個就是具備可移植性,即不管在哪個平臺下運(yùn)行,一份代碼無需修改就可以直接運(yùn)行。為了確保這一點(diǎn),基本數(shù)據(jù)類型被定義為具有明確的范圍和數(shù)學(xué)行為,與C和C++這類語言“允許整數(shù)的大小隨著執(zhí)行環(huán)境的要求而變化”不同,Java語言的數(shù)據(jù)類型都具有嚴(yán)格定義的范圍。無論在那種平臺下,int總是32位的。雖然嚴(yán)格指定基本數(shù)據(jù)類型的范圍在某些環(huán)境下會造成性能損失,但這是為了實(shí)現(xiàn)可移植性而必須付出的。

Java的八種基本類型說明如下所示,其中每一種都有特定的格式和大小 |基本類型|說明|字節(jié)數(shù) |:----:|:----:|:----: |byte|字節(jié)長度的整數(shù),八位|1個字節(jié) |short|短整數(shù),十六位|2個字節(jié) |int|整數(shù),三十二位|4個字節(jié) |long|長整數(shù),六十四位|8個字節(jié) |float|單精度浮點(diǎn)數(shù),三十二位|4個字節(jié) |double|雙精度浮點(diǎn)數(shù),六十四位|8個字節(jié) |char|Unicode字符|2個字節(jié) |boolean|布爾值|1個字節(jié)

2. 字面值有哪些類型

基本類型的字面值有四種子類型:整數(shù)字面值,浮點(diǎn)數(shù)字面值,字符字面值,布爾字面值

3. 整型數(shù)據(jù)介紹

3.1 整型數(shù)據(jù)

Java定義了四種整數(shù)類型:byte,short,int,long。所有這些類型都是有符號的、正的整數(shù)或者負(fù)的整數(shù)。Java不支持無符號(正值)的整數(shù)。博客 名稱|寬度|范圍 :--:|:--:|:--:| long|64|-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 int|32|-2 147 483 648 ~ 2 147 483 647 short|16|-32 768 ~ 32767 byte|8|-128 ~ 127

當(dāng)中,最常用的整數(shù)類型是int。

  • int類型經(jīng)常用于控制循環(huán)變量和索引數(shù)組。對于那些不需要更大范圍的int類型數(shù)值的情況,你可能會認(rèn)為使用范圍更小的byte和short類型效率會更高,然而事實(shí)并非如此。因?yàn)樵诒磉_(dá)式中使用byte和short值時,當(dāng)對表達(dá)式求值時它們會被提升為int類型。所以,當(dāng)需要使用整數(shù)時,int通常是最好的選擇。

3.2 整數(shù)字面值

整數(shù)字面值可以寫為十進(jìn)制,十六進(jìn)制(加前綴0x或0X),八進(jìn)制(加前綴0),二進(jìn)制(加前綴0B或0b)

//十進(jìn)制
int x=10;
//十六進(jìn)制數(shù),即十進(jìn)制的32
int y=0x20;
//八進(jìn)制,即十進(jìn)制的15
int z=017;
//二進(jìn)制,即十進(jìn)制的7
int u=0b0111;

整數(shù)字面值用于將值賦給byte,short,int和long類型的變量。所賦值不能超出變量的存儲范圍

  • 例如,以下代碼在IDE中就會提示錯誤,因?yàn)閎yte的大值為127
byte b = 250;
  • 要將一個值賦給long類型時,在數(shù)字的后面要加上后綴字母L或l。否則,如下代碼中的整數(shù)值其實(shí)是被看做是int類型的
long a = 120;
  • 在以下代碼中,就會產(chǎn)生一個錯誤,因?yàn)?9999999999超出了int類型的存儲能力。為了解決這個問題,需要在數(shù)字后加上后綴字母L或l
long a = 99999999999;

如果整數(shù)字面值太長,可讀性會受到影響。

  • 從Java 7開始,可用在整數(shù)字面值中使用下劃線將數(shù)字分隔開。
//十進(jìn)制
int x=1_000_000;
//十六進(jìn)制數(shù),即十進(jìn)制的32
int y=0x2_0;
//八進(jìn)制,即十進(jìn)制的15
int z=0_17;
//二進(jìn)制,即十進(jìn)制的7
int u=0b0_111;

4. 浮點(diǎn)型介紹

4.1 浮點(diǎn)型數(shù)據(jù)

浮點(diǎn)數(shù)也稱為實(shí)數(shù),當(dāng)計算需要小數(shù)精度的表達(dá)式時使用。 名稱|寬度|范圍 :--:|:--:|:--:| float|32|1.4e-045 ~ 3.4e+038 double|64|4.9e-324 ~ 1.8e+308

float

  • float類型表示使用32位存儲的單精度數(shù)值。在某些處理器上,單精度運(yùn)行速度更快,并且占用的空間是雙精度的一半,但是當(dāng)數(shù)值非常大或者非常小時會變得不精確。如果需要小數(shù)部分,且精確度要求不高時,就可以考慮使用float類型。

double

  • double類型表示使用64位存儲的雙精度數(shù)值。在sin()、cos()和sqrt()這類數(shù)學(xué)函數(shù)中,返回值都是double類型。如果需要在很多次迭代運(yùn)算中保持精度,或是操作非常大的數(shù)值時,double類型是最佳選擇。

4.2 浮點(diǎn)數(shù)字面值

浮點(diǎn)數(shù)包含以下四個部分

  • 一個整數(shù)部分
  • 一個小數(shù)點(diǎn)
  • 一個小數(shù)部分
  • 一個可選的指數(shù)

例如,在1.7e8中,1是整數(shù)部分,7是小數(shù)部分,8是指數(shù)

  • 在float和double類型中,0的整數(shù)部分是可選的
  • 例如,0.5可以寫成.5
  • 浮點(diǎn)數(shù)字面值加上的后綴字母F或f表明其為float類型,如果沒有標(biāo)明,該浮點(diǎn)數(shù)字面值將是double類型

5. 字符介紹

5.1 字符型數(shù)據(jù)

char是用于存儲字符的數(shù)據(jù)類型。Java的設(shè)計初衷是允許程序員編寫在世界范圍內(nèi)均可使用的語言,因此采用了Unicode標(biāo)準(zhǔn)來表示字符。Unicode定義了一個完全國際化的字符集,能夠表示全部人類語言中的所有字符,為此需要使用十六位寬度來存儲。char的范圍是0 ~ 65536,沒有負(fù)的char值。

對于一些語種,例如英語、德語等,可以使用八位寬度來表示這類語言的字符,使用Unicode在一定程度上會降低效率,但這是為了在全球獲得可移植性而必須付出的代價。

盡管char被設(shè)計為容納Unicod字符,但也可以用作整數(shù)類型,可以對char類型的變量執(zhí)行算術(shù)運(yùn)算。

5.2 字符字面值

字符字面值是一個Unicode字符,或者是單引號括起來的一個轉(zhuǎn)義序列

例如

'a'
'b'
'\b' 回退字符
'\n' 換行
'\r' 回車

6. 布爾字面值

布爾類型有兩個值,分別為true和false。

例如,聲明一個布爾變量bool

boolean bool=true;

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

在涉及處理不同數(shù)據(jù)類型時,常常需要將一個變量的值賦給另一個變量,這就需要進(jìn)行類型轉(zhuǎn)換

默認(rèn)轉(zhuǎn)換

  • byte,short,char—int—long—float—double
  • byte,short,char相互之間補(bǔ)轉(zhuǎn)換,他們參與運(yùn)算首先轉(zhuǎn)換為int類型

強(qiáng)制轉(zhuǎn)換

  • 格式: 目標(biāo)類型 變量名 = (目標(biāo)類型)值或變量名
  • int a = (int) 15.7f;

注意要點(diǎn)

!!!!!!!注意!!!!!!!!
1:在java中,任何一個整數(shù)默認(rèn)為 int 類型 (1)
2:在java種,任何一個小數(shù),默認(rèn)為 double 類型( 1.0)
3:123L 或者 1231 編譯器會將該數(shù)當(dāng)成long類型
4:12.345f 或者12.345F 編譯器會將該數(shù)當(dāng)成float類型

7.1 加寬轉(zhuǎn)換

當(dāng)從一種基本類型轉(zhuǎn)換向另一種基本類型時,如果后者的大小和前者相同或者更大,就叫做加寬轉(zhuǎn)換

  • 例如,將int(32位)轉(zhuǎn)為long(64位)。此時不會有信息丟失的風(fēng)險,且加寬轉(zhuǎn)換是隱式發(fā)生的,不需要在代碼中任何事情
  • 例如
int a=10;
long b=a;

7.2 收窄轉(zhuǎn)換

收窄轉(zhuǎn)換發(fā)生在從一種基本類型轉(zhuǎn)換為另一種更小類型的轉(zhuǎn)換中

  • 例如,從long(64位)到int(32位)。收窄轉(zhuǎn)換需要顯示調(diào)用,用圓括號指定目標(biāo)類型
long a=10;
int b=(int)a;
  • 如果被轉(zhuǎn)換的值比目標(biāo)類型的容量還要大的話,收窄轉(zhuǎn)換將導(dǎo)致信息丟失
  • 例如,9876543210對int類型來說太大了
long a=9876543210L;
int b=(int)a;
//輸出值是1286608618
System.out.println(b);

8. 表達(dá)式中的自動類型提升

除了賦值外,在表達(dá)式中也可能會發(fā)生類型轉(zhuǎn)換。在表達(dá)式中,中間值要求的精度有時會超出操作數(shù)的范圍。博客

例如:

byte a = 40;
byte b = 50;
byte c = 100;
int d = a * b / c;

中間部分 ab 很容易超出byte操作數(shù)的范圍。為了解決這類問題,當(dāng)對表達(dá)式求值時,Java會自動將每個byte,short或char操作數(shù)提升為int類型。這意味著使用int類型而不是byte類型執(zhí)行子表達(dá)式ab。因此,即時a和b都被指定為byte類型,中間表達(dá)式(50 * 40)的結(jié)果2000是合法的。

自動類型提升很有用,但有時候會導(dǎo)致難以理解的編譯時錯誤。例如:

byte b=10;
//錯誤
b= b*2;

如上代碼試圖將 10 * 2 的結(jié)果(一個完全有效的byte值)保存到byte變量中,但是編譯器卻提示錯誤。當(dāng)計算表達(dá)式的值時,操作數(shù)被自動提升為int類型,所以結(jié)果也被提升為int類型。因此,現(xiàn)在是試圖將一個int類型值轉(zhuǎn)為byte變量,如果不使用強(qiáng)制類型轉(zhuǎn)換,就不能將結(jié)果賦給byte變量。

Java定義了幾個應(yīng)用于表達(dá)式的類型提升規(guī)則

  • 對于一元操作符來說,如果操作數(shù)的類型是byte,short或char,運(yùn)算結(jié)果提升為int類型
  • 對與二元操作符來說,提升規(guī)則是從以下幾條依次選擇一條執(zhí)行
  • 如果操作數(shù)類型均為byte、short或char,那么兩個數(shù)均轉(zhuǎn)為int類型,結(jié)果數(shù)也將為int類型
  • 如果操作數(shù)包含double類型,那么另一個操作數(shù)也轉(zhuǎn)為double,結(jié)果數(shù)也將為double類型
  • 如果操作數(shù)包含float類型,那么另一個操作數(shù)也轉(zhuǎn)為float,結(jié)果數(shù)也將為float類型
  • 如果操作數(shù)包含long類型,那么另一個操作數(shù)也轉(zhuǎn)為long,結(jié)果數(shù)也將為long類型

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。

新聞名稱:《Java架構(gòu)筑基》從Java基礎(chǔ)講起——基本數(shù)據(jù)類型-創(chuàng)新互聯(lián)
分享路徑:http://muchs.cn/article32/dooepc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站設(shè)計、品牌網(wǎng)站建設(shè)、微信小程序網(wǎng)站內(nèi)鏈、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)