Java從入門到成神【02】變量、基本數據類型、基本數據類型間的轉換

我的總結是我自己的理解,在表述上會和別人的不同,僅供參考,如有錯誤請指正,謝謝!

1.變量

1.1 定義

我對變量的理解是:1.變量可以理解爲一個房間,房間裏面可以放各種“物品”,而“物品”就是數據,當我們要把數據存起來的時候,就要在內存中開闢一間“房間”(聲明一個變量)。2.變量也可以理解爲是一個代詞,指代的就是變量裏面存放的數據。

1.2 聲明一個變量

所謂的在內存中開闢一間“房間”,就是聲明一個變量。(爲什麼要叫做“聲明”?聲明就是“告訴你”的意思,聲明一個變量,就是告訴你以前沒有這個變量,而現在有了,從現在開始你就可以使用這個變量了。)例:

int a;//聲明一個int型變量,變量名爲a
int b,c,d;//聲明3個int型變量,變量名分別爲b,c,d

注:在一個作用域中,不能重複聲明“變量名”相同的變量,否則會編譯錯誤。例:

int a;
int a;//變量名a重複了,編譯錯誤
1.3 變量的初始化

變量的初始化是指,第一次給變量賦值。也就是第一次往一間“房間”裏放一件物品,第二次往這間“房間”裏放物品就不叫初始化了,而且第二次放物品時,第一次放進去的物品就消失了,也就是說當往一個變量裏面多次賦值的時候,每一次賦值都會將上一次賦的值覆蓋掉。例:

int a = 10;//聲明一個int型變量a,賦值爲10,第一次賦值稱爲初始化
a = 20;//再次給變量a賦值爲20,不是第一次賦值所以不能稱爲初始化,同時前面賦值的10被覆蓋了

int b = 50;//可以聲明的同時賦值

int c;//也可以先聲明
c = 50;//後賦值,第一次賦值稱爲初始化

注:給變量賦值的時候,所賦值的數據類型必須和變量的數據類型一致,否則編譯錯誤。(數據類型下面會介紹,類型轉換先不談)

int a = 3.14;//3.14是浮點型,變量a是int型(整型),數據類型不一致,編譯錯誤
1.4 使用

使用一個變量,就是使用這個變量裏面存放的數據。比如使用一個變量進行運算,實質是拿變量中的數據進行運算;使用一個變量拿去輸出,實質是輸出這個變量中存放的數據。例:

int a = 10;
int b = 20;
ing c;
c = a+b;//使用a和b進行運算,實質是使用a、b中的數據10、20進行運算,a+b就是10+20,然後把結果30賦值給c
System.out.println(c);//輸出c就是輸出c裏面的數據30

注:使用變量有兩個前提,一是使用前必須聲明,二是使用前必須初始化。沒有聲明就使用,或者聲明瞭沒有初始化都會編譯錯誤。例:

System.out.println(m);//m沒有聲明,直接輸出會編譯錯誤
int m;//聲明變量m
System.out.println(m);//m雖然聲明瞭但是沒有初始化,編譯錯誤
1.5 變量的命名

1)只能包含字母、數字、_和$符,並且不能以數字開頭;

2)嚴格區分大小寫,如student和Student是兩個不一樣的變量;

3)不能使用關鍵字;

4)可以用中文命名,但是強烈!不建議!用中文命名;

5)建議用英文命名,儘量做到見名知意,一個英文單詞能表示就用一個英文單詞表示,一個英文單詞不能表示則建議用多個單詞拼接命名;

6)建議採用“駝峯命名法”,即第一個單詞全小寫,其餘單詞的首字母大寫,如myScore、myMathScore等。


2.基本數據類型

2.1 整型

整型變量有4種:byte、short、int和long。

2.1.1 byte型

byte型佔1個字節(8位),範圍爲-128至127(或-2^7至2^7-1)。byte類型進行運算時會自動轉換爲int型。例:

byte a = 28;
byte b = 30;
byte c = a+b;//byte類型的a和b參與運算時自動轉換爲int類型,所以用byte類型變量c接收會編譯錯誤
int d = a+b;//用int類型變量則不會出現編譯錯誤
2.1.2 short型(短整型)

short型佔2個字節(16位),範圍爲-32768至32767(或-2^15至2^15-1)。short類型進行運算時也會自動轉換爲int型。例同byte型。

2.1.3 int型(整型)

int型佔4個字節(32位),範圍爲-2147483648至2147483647(或-2^31至2^31-1)。記住範圍在正負21億多就差不多了。int型是整型直接量的默認類型。

int e = 8;//直接寫出來的整數數字就是整型直接量,例如這裏的8
int f = 2200000000;//給int型變量f賦值22億,超出了int型的範圍,編譯錯誤 

由於超出數據類型的範圍而出現編譯錯誤時,換一個範圍更大的數據類型來接收即可。

兩個整型相除,結果還是整型,而且小數位被無條件捨棄,不會四捨五入。例:

int g = 4/8;//結果爲0,而不是0.5,因爲小數位被捨棄
2.1.4 long型(長整型)

long型佔8個字節(64位),範圍爲-9223372036854775808至9223372036854775807(或-2^63至2^63-1)。記住範圍很大很大就行。由於int型是整型直接量的默認類型,所以想要將一個超出int型範圍的整型直接量存在long型變量中, 就要在直接量後面加上一個字母l或者L。由於l容易與1混淆,所以一般加L。例:

long g = 2200000000L;//22億超出了int型範圍,在後面加上L則可以存在long型變量中
long h = 300;//300爲直接量,默認int型,且沒有超出int型範圍。int型賦值給long型時,會自動轉換類型,所以可以不在後面加L

類型轉換分爲自動轉換和強制轉換,自動轉換就是小的類型轉換爲大的類型,而大的類型轉換爲小的類型時就需要強制轉換。強制轉換可能出現溢出等情況,所以儘量不要強轉,要強轉前應先確保轉換後不會溢出。

2.2 浮點型

浮點型有double型與float型。這兩個類型的區別在於小數點後面能保留的位數的多少。

2.2.1 double型(雙精度浮點型)

double型佔8個字節(64位),範圍爲4.9E-324至1.7976931348623157E308。double型爲小數直接量的默認類型。

2.2.2 float型(單精度浮點型)

float型佔4個字節(32位),範圍爲1.4E-45至3.4028235E38。

double和float型數據進行運算時,有時會發生舍入誤差,精確場合不適用。例:

double g = 10.0-4.9;
System.out.println(g);//結果爲5.1,結果精確
double h = 6.0-4.9;
System.out.println(h);//結果爲1.0999999999999996,發生舍入誤差,結果不精確
2.3 字符型

char型(字符型)佔2個字節(16位),範圍爲0至65535。字符型實質上存儲的是字符在Unicode編碼集中的編號,例如大寫字母'A',實際上存儲的是65,小寫字母'a'實際上存儲的是97,數字'0'實際上存儲的是48。所以char類型可以參與運算,運算時自動轉換爲int型。例:

char a = 'a';//字符用單引號''括起來,且只能是單個字符,例如'a'可以,而'aa'則不行
char b = '我';//字符可以存中文
int c = 1;
int d = a+c;//char型參與運算時自動轉換爲int型,值爲Unicode編碼集中對應的編號,其中'a'爲97,所以d 的值爲98
2.4 boolean型(布爾型)

boolean型佔1個字節(8位),boolean型的值只能爲false或者true。

3.基本數據類型間的轉換

3.1 基本數據類型從小到大依次爲:

byte < short (char)< int < long < float < double

3.2 轉換方式

1)自動轉換:從小類型轉換到大類型。無隱患。

2)強制轉換:從大類型轉換到小類型。有可能溢出或丟失精度。例:

long l = 2200000000L;
int i = (int)l;
System.out.println(i);//結果爲-2094967296。因爲22億超出了int型的範圍,所以溢出了
double d = 2.345;
int e = (int)d;
System.out.println(e);//結果爲2,小數點後的345丟失,丟失精度
3.3 兩點規則

1)整型直接量可以直接賦值給byte,short,char,但不能超出其範圍。

2)byte,short,char型數據參與運算時,會自動轉換爲int型再進行運算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章