您好,登錄后才能下訂單哦!
一、基本類型
不使用New創(chuàng)建,聲明一個(gè)非引用傳遞的變量,且變量的值直接置于堆棧中,大小不隨運(yùn)行環(huán)境變化,效率更高。使用new創(chuàng)建的引用對(duì)象存儲(chǔ)在堆中。
基本類型包括如下幾種:byte、short、int、long、float、double、boolean、char,可以通過(guò)相關(guān)方法查看范圍大小。
public class IntType01 {
public static void main(String[] args) {
System.out.println("進(jìn)制位數(shù):"+Integer.SIZE);
System.out.println("最小值:"+Integer.MIN_VALUE);
System.out.println("最大值:"+Integer.MAX_VALUE);
System.out.println("進(jìn)制位數(shù):"+Double.SIZE);
System.out.println("最小值:"+Double.MIN_VALUE);
System.out.println("最大值:"+Double.MAX_VALUE);
}
}
自動(dòng)轉(zhuǎn)換
:范圍小的數(shù)據(jù)類型可以自動(dòng)轉(zhuǎn)換成范圍大的數(shù)據(jù)類型。
強(qiáng)制轉(zhuǎn)換
:把一種數(shù)據(jù)類型轉(zhuǎn)換為另外一種數(shù)據(jù)類型。
類型提升
:表達(dá)式運(yùn)算中有不同的數(shù)據(jù)類型,類型會(huì)自動(dòng)向范圍大的提升。
public class IntType02 {
public static void main(String[] args) {
// 自動(dòng)轉(zhuǎn)換
int i = 112 ;
long j = i ;
System.out.println(j);
// 強(qiáng)制轉(zhuǎn)換
double d = 13.14 ;
int f = (int)d;
System.out.println(f);
// 類型提升
long r = i * j ;
System.out.println(r);
}
}
注意:類型轉(zhuǎn)換中最需要關(guān)注的問(wèn)題就是范圍大小問(wèn)題。
基本數(shù)據(jù)類型不符合面向?qū)ο笏枷?從而出現(xiàn)了包裝器類型, 并且包裝器添加了更多的屬性和方法,自動(dòng)包裝功能可以將基本類型轉(zhuǎn)換為包裝器類型。Java為每個(gè)原始類型都提供了一個(gè)封裝類,Integer、Double、Long、Boolean、Byte等等。
public class IntType03 {
public static void main(String[] args) {
Integer int1 = null ;
Double dou1 = 13.14 ;
Long lon1 = 123L ;
}
}
Integer變量的默認(rèn)值為null,說(shuō)明Integer可以區(qū)分出未賦值和值為0的區(qū)別,好比考試得0分和沒(méi)參加考試的區(qū)別。
char類型變量是用來(lái)儲(chǔ)存Unicode編碼的字符的,unicode字符集包含漢字。
public class IntType04 {
public static void main(String[] args) {
char cha1 = '知';
System.out.println(cha1);
}
}
注意
:可能存在特殊生僻字沒(méi)有包含在unicode編碼字符集中。
+= 和 =
的區(qū)分:short s1=1;s1=s1+1與short s1=1;s1+=1;
問(wèn)題。
public class IntType05 {
public static void main(String[] args) {
short s1 = 1 ;
// s1 = s1 + 1 ; // 變異錯(cuò)誤:s1自動(dòng)向int類型轉(zhuǎn)換
s1 += 1 ;
System.out.println(s1);
}
}
+=
運(yùn)算符是java語(yǔ)言規(guī)定的,編譯器會(huì)對(duì)它進(jìn)行識(shí)別處理,因此可以正確編譯。
兩個(gè)邏輯值: true
和false
,通常用來(lái)表示關(guān)系運(yùn)算的結(jié)果。
public class IntType06 {
public static void main(String[] args) {
// 存在精度損失問(wèn)題:0.30000000000000004
System.out.println(3*0.1);
// true
System.out.println(0.3 == 0.3);
// false
System.out.println(3*0.1 == 0.3);
}
}
這兩個(gè)類型可能大部分情況下都說(shuō)不明白關(guān)系和區(qū)分,首先要理解幾個(gè)基礎(chǔ)概念。
浮點(diǎn)數(shù)
:在計(jì)算機(jī)中用以近似表示任意某個(gè)實(shí)數(shù)。具體的說(shuō),這個(gè)實(shí)數(shù)由一個(gè)整數(shù)或定點(diǎn)數(shù)乘以某個(gè)基數(shù)(計(jì)算機(jī)中通常是2)的整數(shù)次冪得到
單精度浮點(diǎn)數(shù)
:?jiǎn)尉雀↑c(diǎn)數(shù)是用來(lái)表示帶有小數(shù)部分的實(shí)數(shù),一般用于科學(xué)計(jì)算。占用4個(gè)字節(jié)(32位)存儲(chǔ)空間
雙精度浮點(diǎn)數(shù)
:雙精度浮點(diǎn)數(shù)(double)是計(jì)算機(jī)使用的一種數(shù)據(jù)類型,使用64位(8字節(jié))來(lái)存儲(chǔ)一個(gè)浮點(diǎn)數(shù)。
位數(shù):32
最小值:1.4E-45
最大值:3.4028235E38
位數(shù):64
最小值:4.9E-324
最大值:1.7976931348623157E308
float和double聲明和轉(zhuǎn)換相關(guān)演示案例。
public class IntType07 {
public static void main(String[] args) {
// float 聲明
float f1 = 12.3f ;
// double 聲明
double d1 = 13.4 ;
// 向下轉(zhuǎn)型,需要強(qiáng)制轉(zhuǎn)換
float f2 = (float) d1 ;
System.out.println("f1="+f1+";d1="+d1+";f2="+f2);
}
}
支持任意大小的整數(shù)運(yùn)算,且不會(huì)再運(yùn)算過(guò)程有任何丟失情況,沒(méi)有對(duì)應(yīng)的基本類型,運(yùn)算也會(huì)變得相對(duì)復(fù)雜,運(yùn)算速度自然也就會(huì)下降。
支持任意精度的定點(diǎn)數(shù),通常用來(lái)進(jìn)行精確的貨幣計(jì)算,在公司的日常開(kāi)發(fā)中,這里通常是硬性要求。
public class IntType08 {
public static void main(String[] args) {
BigDecimal dec1 = new BigDecimal(3.0) ;
BigDecimal dec2 = new BigDecimal(2.11) ;
// 精確加法運(yùn)算
BigDecimal res1 = dec1.add(dec2) ;
System.out.println(res1);
// 精確減法運(yùn)算,并截取結(jié)果
// HALF_UP:四舍五入
BigDecimal res2 = dec1.subtract(dec2);
System.out.println(res2.setScale(1, RoundingMode.HALF_UP));
// 精確乘法運(yùn)算
BigDecimal res3 = dec1.multiply(dec2) ;
System.out.println(res3.doubleValue());
// 精確除法運(yùn)算,并截取結(jié)果
// ROUND_DOWN:直接按保留位數(shù)截取
BigDecimal res4 = dec1.divide(dec2,2,BigDecimal.ROUND_DOWN);
System.out.println(res4);
}
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。