變量申請(qǐng)內(nèi)存來存儲(chǔ)值梢薪。當(dāng)創(chuàng)建變量的時(shí)候,需要在內(nèi)存申請(qǐng)空間越平。內(nèi)存管理系統(tǒng)根據(jù)變量的類型為變量分配存儲(chǔ)空間,分配的空間只能來存儲(chǔ)該類型數(shù)據(jù)灵迫。
- Java的兩大數(shù)據(jù)類型
- 內(nèi)置數(shù)據(jù)類型
- 引用數(shù)據(jù)類型
內(nèi)置數(shù)據(jù)類型
八種基本類型:六種數(shù)字類型(四個(gè)整數(shù)型秦叛,兩個(gè)浮點(diǎn)型),一種字符類型瀑粥,還有一種布爾類型
byte
- byte數(shù)據(jù)類型是8位挣跋、有符號(hào),以二進(jìn)制補(bǔ)碼表示的整數(shù)狞换;
- 最小值是-128避咆;最大值是127;
- 默認(rèn)值是0修噪;
- byte類型用在大型數(shù)組中節(jié)約空間牌借,主要代替整數(shù),因?yàn)閎yte變量占用的空間只用int 類型的四分之一割按;
- byte a =100, byte b= -50;
short
short數(shù)據(jù)類型是16位膨报、有符號(hào)的以二進(jìn)制補(bǔ)碼表示的整數(shù);
最小值是-32768(-2^15);
最大值是32767(2^15 -1);
short 數(shù)據(jù)類型也可以像byte那樣節(jié)省空間。一個(gè)short變量是int型變量所占空間的二分之一现柠;
默認(rèn)值是0院领;
例子: short s=1000, short r =-20000.
int
- int 數(shù)據(jù)類型是32位、有符號(hào)的以二進(jìn)制補(bǔ)碼表示的整數(shù)够吩;
- 最小值是-2^31
- 最大值是2^31-1
- 一般地整型變量默認(rèn)為int型
- 默認(rèn)值是0比然;
- 例子: int a = 100000,int b = -200000.
long
- long數(shù)據(jù)類型是64位、有符號(hào)地以二進(jìn)制補(bǔ)碼表示地整數(shù)周循;
- 最小值-2^63; 最大值2^63-1;
- 主要使用在需要比較大整數(shù)的系統(tǒng)上强法;
- 默認(rèn)值是0L;
- 例子:long a=100000L; Long b = -200000L;
"L"不區(qū)分大小寫
float
- float數(shù)據(jù)類型是單精度、32位湾笛、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù)饮怯;
- float在存儲(chǔ)大型浮點(diǎn)數(shù)組的時(shí)候可節(jié)省內(nèi)存空間;
- 默認(rèn)值是0.0f;
- 浮點(diǎn)數(shù)不能用來表示精確的值嚎研,如貨幣蓖墅;
例子: float f1 =234.5f;
double
- double數(shù)據(jù)類型是雙精度、64位临扮、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù)论矾;
- 浮點(diǎn)數(shù)的默認(rèn)類型為double類型;
- double類型同樣不能表示精確的值杆勇,如貨幣贪壳;
- 默認(rèn)值是0.0d;
- 例子:double d1 =123.4;
boolean
- boolean數(shù)據(jù)類型表示一位的信息;
- 只有兩個(gè)取值:true和false;
- 這種類型只作為一種標(biāo)志來記錄true/false情況蚜退;
- 默認(rèn)值是false;
- 例子:boolean one = true;
char
- char數(shù)據(jù)類型表示一位的信息寥袭;
- 最小值是\u0000(即0);
- 最大值是\uffff(即為65535)关霸;
- char 數(shù)據(jù)類型可以存儲(chǔ)任何字符传黄;
- 例子 char leter = 'A';
引用類型
- 在Java中,引用類型的變量非常類似于C/C++的指針队寇。引用類型指向一個(gè)對(duì)象膘掰,指向?qū)ο蟮淖兞渴且米兞窟@些變量在聲明時(shí)被指定為一個(gè)特定的類型,比如Employee佳遣、puppy等识埋。變量一旦聲明后,類型就不能被改變了零渐。
- 對(duì)象數(shù)組都是引用數(shù)據(jù)類型;
- 所有引用類型的默認(rèn)值都是null;
- 一個(gè)引用變量可以用來引用任何與之兼容的類型窒舟。
- 例子: Site site = new Site("Runob");
Java常量
- 常量在運(yùn)行程序時(shí)是不能被修改的。
- 在Java中使用final關(guān)鍵字來修飾常量诵盼,聲明方式和變量類似惠豺;
final double PI = 3.1415929银还;
- 雖然常量名也可以用小寫,但為了便于識(shí)別洁墙,通常使用大寫字母表示常量蛹疯。
- 字面量可以賦給任何內(nèi)置類型的變量。例如:
byte a =68;
char a = 'A'
byte热监、 int捺弦、long、short都可以用十進(jìn)制孝扛、16進(jìn)制以及8進(jìn)制的方式來表示列吼。
當(dāng)使用常量的時(shí)候,前綴0表示8進(jìn)制苦始、而前綴0x代表16進(jìn)制寞钥。例如:
int decimal = 100;
int octal = 0144;
int hexa = 0x64;
和其他語言一樣,Java的字符串也是包含在兩個(gè)引導(dǎo)之間的字符序列盈简。下面是字符串型面量的例子:
"Hello world"
"two\nlines"
"\"this isin quotes\""
字符串常量和字符常量都可以包含任何Unicode字符。例如:
char a = '\u0001";
String a = "\u0001";
特殊的轉(zhuǎn)義字符序列
自動(dòng)類型轉(zhuǎn)換
- 就是把不同類型的數(shù)據(jù)轉(zhuǎn)化為同一類型太示,然后進(jìn)行運(yùn)算
- 轉(zhuǎn)換等級(jí)從低級(jí)到高級(jí)
byte,short,char-->int-->long-->float-->double - 轉(zhuǎn)換原則
- 不能對(duì)boolean類型進(jìn)行類型轉(zhuǎn)換柠贤。
- 不能把對(duì)象類型轉(zhuǎn)換成不相關(guān)類的對(duì)象。
- 在把容量大的類型轉(zhuǎn)換為容量小的類型時(shí)必須使用強(qiáng)制類型轉(zhuǎn)換类缤。
- 轉(zhuǎn)換過程中可能導(dǎo)致溢出或損失精度臼勉,例如:
int i = 128;
byte b =(byte)i;
byte類型是8位,最大值是127餐弱,所以當(dāng)int強(qiáng)制轉(zhuǎn)換為byte類型時(shí)值128時(shí)候就會(huì)導(dǎo)致溢出宴霸。
- 浮點(diǎn)數(shù)到整數(shù)的轉(zhuǎn)換是通過舍棄小數(shù)得到,而不是四舍五入膏蚓,例如:
(int)23.7 == 23
(int)-45.89f ==-45
自動(dòng)類型轉(zhuǎn)換
必須滿足轉(zhuǎn)換前的數(shù)據(jù)類型的位數(shù)要低于轉(zhuǎn)換后的數(shù)據(jù)類型瓢谢,例如: short數(shù)據(jù)類型的位數(shù)為16位,就可以自動(dòng)轉(zhuǎn)換位數(shù)為32的int類型驮瞧,同樣float數(shù)據(jù)類型的位數(shù)為32氓扛,可以自動(dòng)轉(zhuǎn)換為64位的double類型。
強(qiáng)制類型轉(zhuǎn)換
- 條件是轉(zhuǎn)換的數(shù)據(jù)類型必須是兼容的论笔。
- 格式:(type)value type是要強(qiáng)制類型轉(zhuǎn)換后的數(shù)據(jù)類型 實(shí)例:
public class QiangZhiZhuanHuan{
public static void main(String[] args){
int i1 = 123;
byte b = (byte)i1;//強(qiáng)制類型轉(zhuǎn)換為byte
System.out.println("int強(qiáng)制類型轉(zhuǎn)換為byte后的值等于"+b);
}
}
運(yùn)行結(jié)果:
int強(qiáng)制類型轉(zhuǎn)換為byte后的值等于123
隱含強(qiáng)制類型轉(zhuǎn)換
- 整數(shù)的默認(rèn)類型是 int采郎。
- 浮點(diǎn)型不存在這種情況,因?yàn)樵诙x float 類型時(shí)必須在數(shù)字后面跟上 F 或者 f狂魔。
這一節(jié)講解了 Java 的基本數(shù)據(jù)類型蒜埋。下一節(jié)將探討不同的變量類型以及它們的用法。