黑馬程序員——JAVA基礎---基本數據類型

——Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! ——-
##基本數據類型 ##

一 整數類型

  整數類型用來存儲整數數值,即沒有小數部分的數值。與C、C++語言相同,整數在Java語言中有3種表示形式:十進制、八進制和十六進制。
十進制整數:以1~9開頭的數,如123、−456、0。
八進制整數:以0開頭且其後由0~7範圍(包括0和7)內的數組成的整數,如01011和031,分別表示十進制數521和25,計算方式如下。
01011轉換爲十進制數,1  83 + 0  82 + 1  81 + 1  80 = 521
031轉換爲十進制數:(3  81 + 1  80)= 25。
十六進制整數:以0x或0X開頭且其後由0~9、a~f(包括0和9、a和f)組成,如0x25、0Xb01e,分別表示十進制數37和45086,計算方式如下。
0x25轉換爲十進制數:2  161 + 5  160 = 37;
0Xb01e轉換爲十進制數:11  163 + 0  162 + 1  161 + 14  160 = 45086。
注意:
在十六進制數中,0~9由數字表示,10~15分別由a、b、c、d、e、f代替。無論是十進制數、八進制數還是十六進制數,計算機會先將它們轉換成二進制數,再進行計算。
二進制數是由數字0和1組成的數據流(或數據序列),在內存中只能存放二進制形式的數據,如00011101,這個二進制數據流(或稱二進制數據序列)共有8位(最左邊的爲最高位,最右邊的爲最低位),每一位稱爲1個比特(bit),每8位稱爲1個字節(byte)。這個二進制數表示十進制整數29,計算方式:1  24 + 1  23 + 1  22 + 0  21 + 1  20 29。

  在Java中,存在4種類型來存儲整數:byte、short、int和long,它們的取值範圍如表3.1所示。其中,int是最常用的一種整數類型,但因在大型計算中常會生成很大的整數,超出int類型所表示的取值範圍,所以就需要使用long類型,byte和short類型主要用於一些特殊的情況。
表 各基本數據類型的取值範圍、佔用的內存大小及默認值

這裏寫圖片描述

可以根據這些類型定義相應的整型變量,定義方法如下:
byte a //定義變量a並指定爲byte型
short b //定義變量b並指定爲short型
int c //定義變量c並指定爲int型
long d //定義變量d並指定爲long型
在爲這些整型變量賦值時,既可賦值爲十進制的整數,也可賦值爲八進制或十六進制的整數,但要注意變量能夠接受的最大與最小值,否則會出現錯誤。對於long型值,若賦予的值大於int型的最大值或小於int型的最小值,則需要在數字後加L或l(小寫的L),表示該數值爲長整型,例如,long num=2147483649L。
對變量賦值後,通過輸出語句會自動地將變量值轉換爲十進制整數輸出。
例如,分別爲字節型變量a賦值爲十進制數123、短整型變量b賦值爲八進制數045、整型變量c賦值爲十六進制數0xb12f、長整型變量d賦值爲十六制數0x160000000L,然後輸出這些變量值。
byte a=123; //定義byte型變量a, 並賦給十進制數值123
short b=045; //定義short型變量b, 並賦給八進制數值045
int c=0xb12f; //定義int型變量c, 並賦給十六進制數值0xb12f
long d=0x160000000L; //定義long型變量d, 並賦給十六進制數值0x160000000L
System.out.println(a); //輸出結果爲: 123
System.out.println(b); //輸出結果爲: 37
System.out.println(c); //輸出結果爲: 45359
System.out.println(d); //輸出結果爲: 5905580032
說明:
賦給long型變量d的十六進制數0x160000000轉換爲二進制數後,需要佔用內存36位(由左向右,每位數字轉換成4位的二進制數,如0x39將轉換爲0011 1001),而Java中規定int型數據佔用的內存爲32位,0x160000000超出了int範圍,需要在數字後加L或l

二 浮點類型

    Java語言包含兩種浮點類型二:單精度浮點類型和雙精度浮點類型,分別用float和double關鍵字來標識,計算機通過這兩種數據類型來存儲小數。
在Java中,默認情況下小數都被看做double型,佔用內存64位,若想使用float型小數,則需要在小數後面添加字母F或f,如1.23F,它佔用內存32位。
   計算機計算出的小數點後的n位,與實際的數值會有一定的誤差,它只能儘量地去接近實際值,所以位數越多越精確。通常float型就足夠了,若要求更精確的計算,可以使用double型,但也要考慮節約資源。
定義浮點型變量的方法如下:
float a //定義變量a並指定爲float型
double b //定義變量b並指定爲double型
在爲浮點型變量賦值時,既可以賦值爲以十進制形式表示的小數,又可以賦值爲以科學記數法形式表示的數值。對於float型,必須在數值後加F或f,表示該數值爲單精度浮點數。
單精度浮點型變量a1賦值以十進制形式表示的小數12.34F,爲單精度浮點型變量a2賦值以科學記數法形式表示的數值1.234E1F,爲雙精度浮點型變量b1賦值以十進制形式表示的小數56.78,爲雙精度浮點型變量b2賦值以科學記數法形式表示的數值567.8E-1,然後輸出這些變量值。

float a1=12.34F; //爲float型變量a1賦值爲十進制表示的單精度小數(在數字後加F)
float a2=1.234E1F; //爲float型變量a2賦值爲科學記數法表示的單精度小數(在數字後加F)
double b1=56.78; //爲double型變量b1賦值爲十進制表示的雙精度小數
double b2=567.8E-1; //爲double型變量b2賦值爲科學記數法表示的雙精度小數
System.out.println(a1); //輸出結果爲: 12.34
System.out.println(a2); //輸出結果爲: 12.34
System.out.println(b1); //輸出結果爲: 56.78
System.out.println(b2); //輸出結果爲: 56.78

三 字符類型

Java語言中的字符類型用來存儲單個字符,它佔用16位(兩個字節)的內存空間,使用關鍵字char進行標識。定義字符類型的變量,可以通過關鍵字char來進行,定義方法如下:
char c1 //定義字符型變量c1
char c2 //定義字符型變量c2
賦給char型變量的字符常量值必須用英文狀態下的一對單引號括起來,由於Java的字符采用Unicode編碼,一箇中文字與一個英文字母在Java中同樣都是用一個字符來表示。
分別爲字符型變量a賦值’m’、字符型變量b賦值’明’、字符型變量c賦值’9’、字符變量d賦值
@’,然後輸出。
char a=’m’; //爲字符型變量ch1賦值字符常量’m’
char b=’明’; //爲字符型變量ch1賦值字符常量’明’
char c=’9’; //爲字符型變量ch1賦值字符常量’9’
char d=’@’; //爲字符型變量ch1賦值字符常量’@’
System.out.println(a); //輸出結果爲: m
System.out.println(b); //輸出結果爲: 明
System.out.println(c); //輸出結果爲: 9
System.out.println(d); //輸出結果爲: @
另外,也可以將字符型變量賦值爲0~65535範圍內的整數,這些整數可使用十進制、八進制或十六進制來表示。根據變量類型,計算機會自動將這些整數轉換爲所對應的字符輸出。
分別爲字符型變量ch1賦值十進制數97、字符型變量ch2賦值八進制數0142、字符型變量ch3賦值十六進制數0x63,然後輸出。
char ch1=97; //爲字符型變量ch1賦值十進制數97
char ch2=0142; //爲字符型變量ch2賦值八進制數0142
char ch3=0x63; //爲字符型變量ch2賦值十六進制數0x63
System.out.println(ch1); //輸出結果爲: a
System.out.println(ch2); //輸出結果爲: b
System.out.println(ch3); //輸出結果爲: c

四 布爾類型

  布爾型數據只有兩個值:true和false,分別代表布爾邏輯中的“真”和“假”,且布爾值不能與整數進行轉換,通常布爾型數據在流程控制中作爲判斷條件。
定義布爾型變量,可以通過關鍵字boolean來定義,定義方法如下:
boolean b1; //定義boolean型變量b1
boolean b2; //定義boolean型變量b2
布爾型數據只存在true和false數值,所以在爲boolean型變量賦值時,除這兩個值外的其他任何數值都是非法的。
爲布爾型變量married賦值false,爲alive賦值true,然後輸出。
boolean married=false;
boolean alive=true;
System.out.println(“已婚:”+married); //輸出結果爲: false
System.out.println(“生命:”+alive); //輸出結果爲: true

五 基本數據類型間的轉換

  前面對基本的數據類型進行了介紹,下面對基本數據類型的轉換進行介紹。Java中有兩種類型轉換形式,分別是自動類型轉換與強制類型轉換。
1.自動類型轉換
自動類型轉換必須在相同數據類型的數據之間進行,並且必須是由低精度類型向高精度類型轉換。自動類型轉換適合於整數類型與浮點類型,例,從byte類型向int類型轉換時,就會發生自動類型轉換。
下面來看一個實現自動類型轉換的實例:
byte bt = 3;
int it = bt;
從上面的實例可以看出,將低精度的byte型變量賦值給int型變量時即實現了自動類型轉換。整型與浮點型數據的精度由低到高如圖所示。
這裏寫圖片描述
圖 數據精度排列

2.強制類型轉換
與自動類型轉換正好相反,強制類型轉換是將高精度變量向低精度變量進行轉換。在實現強制類型轉換時,需要注意的是如果將高精度數據向低精度數據進行類型轉換時,可能會因爲超出了低精度數據類型的取值範圍,導致數據丟失、不完整。
實現數據的強制類型轉換,要在被轉換的變量前面添加轉換的數據類型,具體格式如下:
目標類型 變量 = (目標類型)表達式
目標類型表示要轉換後的數據類型,下面的實例就實現了強制類型轉換:
int id = 16;
byte bid = (byte)id;

   在本次強制類型轉換過程中,由於int型變量值沒有超出byte型的取值範圍,因此byte型變量可以完全容納int型變量。但如果此時int型變量的值爲168(int型數值長度爲32位),當int型數值強制轉換爲byte時,就超出了byte類型的取值範圍,此時就會出現數據丟失的現象,因此要格外注意。圖給出了數值類型之間的合法轉換。
這裏寫圖片描述

圖 基本數據類型之間的合法轉換
注意:
boolean不能被強制轉換爲其他數據類型,反之亦然。

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