[JAVA] Java 變量、表達(dá)式和數(shù)據(jù)類型詳解

數(shù)據(jù)類型


一、變量

變量: 表示存儲(chǔ)空間,可用來(lái)存放某一類型(整數(shù)、小數(shù)...)的數(shù)據(jù),沒有固定值,變量值是可變的,可重復(fù)使用,也可以用來(lái)存儲(chǔ)某種類型的未知數(shù)據(jù)。

變量的特點(diǎn)

① 占據(jù)內(nèi)存中的一塊存儲(chǔ)區(qū)域;

② 該存儲(chǔ)區(qū)域有自己的名稱(變量名)和類型(數(shù)據(jù)類型);

③ 可以被重復(fù)使用,可以在多處使用;

④ 該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化;

Java變量的定義

1.先聲明,再賦值:


int i;

i = 13;


2.聲明的同時(shí)賦值:

int i = 13;

3.同時(shí)聲明多個(gè)變量:

int i = 13,j = 14,k = 15;


變量的分類

根據(jù)變量在類中定義的位置的不同,把變量分成兩大類;

成員變量:直接定義在類里的變量,又稱為全局變量或者字段,亦或稱之為屬性。

局部變量:變量除了成員變量之外,其他的就是局部變量;局部變量根據(jù)定義位置的不同有3種表現(xiàn)形式:方法形參,方法內(nèi)變量,代碼塊變量。

變量作用域:變量的作用范圍或者可訪問(wèn)范圍,只有作用域內(nèi),變量才能被其他程序代碼訪問(wèn)。當(dāng)一個(gè)變量被定義時(shí),它的作用域就確定了: 從定義開始到定義所在的花括號(hào)結(jié)束。


變量使用規(guī)則

1. 變量必須先聲明,并且初始化后才能使用;

2. 聲明變量必須有數(shù)據(jù)類型,不同的數(shù)據(jù)類型在內(nèi)存中有不同的存儲(chǔ)空間;

2. 同一作用域內(nèi)變量名不能重復(fù)定義,且Java對(duì)大小寫敏感;


常量:程序中固定不變化的值,在Java中常量的生命周期從創(chuàng)建開始,到JVM關(guān)閉結(jié)束;

字面值常量: 也稱字面量,或者直接量,表示直接給出的一個(gè)值(可以是整數(shù),小數(shù),true,false等),比如:整數(shù)常量1,2,3,小數(shù)常量3.14,布爾常量false,true等;


二、表達(dá)式

由數(shù)字、運(yùn)算符、數(shù)字分組符號(hào)(括號(hào))、常量、變量等能表達(dá)一個(gè)有意義的結(jié)果的排列組合;用運(yùn)算符號(hào)連接的變量/常量可稱為表達(dá)式。如:


k = i + j;

i - j;


表達(dá)式中操作數(shù)進(jìn)行運(yùn)算得到的最終結(jié)果就是表達(dá)式的結(jié)果,表達(dá)式的運(yùn)算順序大多和數(shù)學(xué)一樣。

表達(dá)式


三、數(shù)據(jù)類型

Java 數(shù)據(jù)類型


分類:在Java中數(shù)據(jù)類型整體上分成兩大類:

1.基本數(shù)據(jù)類型/原生數(shù)據(jù)類型,共8個(gè):

整數(shù)類型 : byte short int long

小數(shù)類型 :? float double

2. 引用數(shù)據(jù)類型/對(duì)象數(shù)據(jù)類型:類/接口/數(shù)組;

3. 在Java中,整數(shù)的默認(rèn)類型是int,小數(shù)的默認(rèn)類型是double

boolean(布爾)類型:通常用于邏輯運(yùn)算和程序流程控制(條件選擇/循環(huán)),該類型的值只能是true 或 false,表示真或假,false和true是boolean的常量;在Java語(yǔ)法中不可以使用0或非0的整數(shù)來(lái)代替false和true,注意區(qū)分于C語(yǔ)言,C語(yǔ)言是允許這樣的;

(特別說(shuō)明:其實(shí)在JVM(Java虛擬機(jī))中對(duì)boolean的處理是用0表示false,非0表示true的,但在語(yǔ)法中不允許的。)

默認(rèn)情況下,布爾類型的值是false;


整數(shù)類型: 有byte、short、int、long 這4種類型;

整型常量的四種表示形式:

① 二進(jìn)制整數(shù):0B或0b開頭(Java7的新特性),如:int a = 0B110;

② 八進(jìn)制整數(shù):要求以0開頭,如 int a = 012;

③ 十進(jìn)制整數(shù):如:int a = 17;

④ 十六進(jìn)制整數(shù):要求0X或0x開頭,如int a = 0x12;

Java語(yǔ)言的整型常量默認(rèn)是int型,聲明long型變量需要在其后加上‘l’或‘L,因小寫的l容易和數(shù)字1相混淆,建議使用大寫L。


小數(shù)類型: 有float、double兩種類型;小數(shù)類型又稱為浮點(diǎn)類型,float表示單精度類型,double表示雙精度類型,但是二者都不能表示精確的小數(shù)。在精度要求高的系統(tǒng)比如:銀行系統(tǒng),計(jì)費(fèi)系統(tǒng)的高精度計(jì)算中,通常會(huì)使用BigDecimal類型。

Java的浮點(diǎn)類型常量有兩種表現(xiàn)形式:

十進(jìn)制形式: 例如:3.14 ,168.0, 0.618

科學(xué)計(jì)數(shù)法形式: 例如:3.14e2, 3.14E2, 1000E-2 ,科學(xué)計(jì)數(shù)法表達(dá)式返回的結(jié)果是double類型;這里的e/E 表示10,即 3.14e2 = 3.14 x 10^2。

默認(rèn)情況下,一個(gè)浮點(diǎn)類型的字面量默認(rèn)是double類型.若要聲明一個(gè)常量為float型,則需在常量后加上f 或 F,double常量后面的D或d可省略。

注意:Java里只有浮點(diǎn)型的變量才可以接受科學(xué)計(jì)算式結(jié)果。

字符類型(char): 字符,字母和符號(hào);char類型:表示16位的無(wú)符號(hào)整數(shù)或者Unicode字符,Java對(duì)字符采用Unicode字符編碼。

Unicode收集了世界上所有語(yǔ)言文字中的符號(hào),是一種跨平臺(tái)的編碼方式,Java的字符占兩個(gè)字節(jié),可以表示一個(gè)漢字。

什么是編碼呢?由于計(jì)算機(jī)只能表示0和1兩個(gè)數(shù),于是人們做規(guī)定使用一個(gè)數(shù)字去表示一個(gè)特定的字符,比如a使用97表示。于是誕生了ASCII(美國(guó)信息交互標(biāo)準(zhǔn)編碼)、Unicode這樣的字符編碼;char數(shù)據(jù)類型前256個(gè)字符和ASCII(美國(guó)信息交互標(biāo)準(zhǔn)編碼)碼中的字符重復(fù)。

ascii 對(duì)照表


char常量有3種表示形式:

① 使用單個(gè)字符來(lái)指定字符常量,用單引號(hào)括起來(lái),格式如:''、'A','a';

char c = 'A';

② 作為十進(jìn)制整數(shù)數(shù)值使用,但是數(shù)據(jù)范圍在[0,65535],格式如:97,不過(guò)打印出來(lái)的值是ASCII碼表中對(duì)應(yīng)的的符號(hào):a。

char c = 97;

③ 和②一樣,但這里表示的是16進(jìn)制的數(shù)值,格式如:'\\uX',X表示16進(jìn)制整數(shù);如:97的16進(jìn)制是61。那么表示為‘\\u0061’打印出來(lái)也是a。

char c = '\\u0061';

所以可以說(shuō)char本質(zhì)上也是整型,數(shù)據(jù)范圍在0 ~ 65535.

引用類型:除了8種基本數(shù)據(jù)類型,其他所有類型都是引用數(shù)據(jù)類型,包括類、接口、數(shù)組。引用數(shù)據(jù)類型默認(rèn)初始值都是null;字符串String其實(shí)是一個(gè)類,不屬于基本數(shù)據(jù)類型,就不在這里講了,后期會(huì)單獨(dú)為String單獨(dú)介紹。

四、數(shù)據(jù)類型轉(zhuǎn)換

溢出:當(dāng)要表示的數(shù)據(jù)超出數(shù)據(jù)類型的臨界范圍時(shí),稱為溢出。溢出情況發(fā)生時(shí)程序并沒有做數(shù)據(jù)范圍檢查處理,此時(shí)會(huì)出現(xiàn)數(shù)據(jù)紊亂情況。看如下的:演示

int最大值是:2147483647,如果對(duì) 2147483647 + 1 結(jié)果會(huì)是多少呢?

int 最大值


計(jì)算結(jié)果變成了最小值-2147483648,不是我們預(yù)料中的2147483648;,可以把數(shù)據(jù)類型看做一個(gè)容器,把數(shù)據(jù)看做要往容器中存放的物品,比如水,水裝滿了就會(huì)溢出,想裝更多的水,就得使用更大的容器,這樣就比較好理解了;所以在使用中,要為數(shù)據(jù)選擇合適的數(shù)據(jù)類型,發(fā)生避免溢出這樣的錯(cuò)誤。

數(shù)據(jù)類型轉(zhuǎn)換:把數(shù)據(jù)從一種類型轉(zhuǎn)換到另一種類型,比如:從int到long,在8大基本數(shù)據(jù)類型中,boolean不參與轉(zhuǎn)換,因?yàn)閎oolean不屬于數(shù)值類型。轉(zhuǎn)換規(guī)則如下:

數(shù)據(jù)類型轉(zhuǎn)換


自動(dòng)類型轉(zhuǎn)換,也稱為“隱式類型轉(zhuǎn)換“, 當(dāng)把小數(shù)據(jù)范圍類型的數(shù)值或變量賦給另一個(gè)大數(shù)據(jù)范圍類型變量,系統(tǒng)可以完成自動(dòng)類型轉(zhuǎn)型。這好比把裝一斤水容器里的水倒進(jìn)可以裝兩斤水的容器里一樣。一般的,我們會(huì)直接把byte,short,char直接賦值給int類型。

當(dāng)一個(gè)算術(shù)表達(dá)式中包含多個(gè)基本數(shù)據(jù)類型(boolean除外)的值時(shí),整個(gè)算術(shù)表達(dá)式的數(shù)據(jù)類型將在數(shù)據(jù)運(yùn)算時(shí)出現(xiàn)類型自動(dòng)提升,其規(guī)則是:所有的byte、short、char類型被自動(dòng)提升到int類型;整個(gè)表達(dá)式的最終結(jié)果類型被提升到表達(dá)式中類型最高的類型;

已有變量如下:


short s = 10;

byte a = 2;

int i = 5;

float f = 10.0F;

double d = 35.0;

判斷該表達(dá)式的結(jié)果類型:? (s / a) -(f / s) - (d + i)



表達(dá)式詳細(xì)運(yùn)行過(guò)程如下:


表達(dá)式運(yùn)行過(guò)程


完結(jié)。老夫雖不正經(jīng),但老夫一身的才華

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容