一秕磷、基本類型包裝類
在實際開發(fā)中,往往需要將數(shù)據(jù)轉換成字符串類型進行存儲炼团,會根據(jù)需要轉換成指定的基本數(shù)據(jù)類型澎嚣,因此疏尿,Java將基本數(shù)據(jù)類型值封裝成了對象,提供了更多的操作基本數(shù)值的功能币叹,用于在基本數(shù)據(jù)類型和字符串之間進行轉換润歉。
1、8 種基本類型對應的包裝類
基本數(shù)據(jù)類型 對應的包裝類
?將字符串轉換成基本數(shù)據(jù)類型:parseXXX(String s);其中XXX表示基本數(shù)據(jù)類型颈抚,s 參數(shù)為可以轉換成基本類型的字符串踩衩,如果字符串無法轉換成基本類型,將會發(fā)生數(shù)字轉換的問題:NumberFormatException
eg:System.out.println(Integer.parseInt("123") + 2);? ? //打印結果為125
將基本類型轉換成字符串有3中方式
(1) 基本類型直接與“ ”相連接即可贩汉;eg:34 + “”
(2) 調用 String 的 valueOf 方法:String.valueOf(34);
(3) 調用包裝類中的 toString 方法:Integer.toString(34);
2驱富、基本類型和對象轉換
基本類型轉換成包裝對象(以 int 類型轉換integer 對象為例)
Integer a = new Integer(2);? ? //構造一個新分配的Integer對象,表示指定的int值
Integer b = new Integer("2");? ? //構造一個新分配的Integer對象匹舞,表示String參數(shù)所指向的int值
包裝對象轉換成基本類型(以 int 類型轉換integer 對象為例)
?int num = a.intValue();? ? //以int類型返回該Integer的值
3褐鸥、自動裝箱拆箱
自動拆箱:對象轉成基本數(shù)值
自動裝箱:基本數(shù)值轉成對象
Integer i = 4;? ? //自動裝箱,相當于Integer i = Integer.valueOf(4);
i = i + 5;? ? //等號右邊:將i對象轉成基本數(shù)值(自動拆箱) i.intValue() + 5; 加法運算完成后赐稽,再次裝箱叫榕,把基本數(shù)值轉成對象。
自動裝箱細節(jié)演示?:當數(shù)值在 byte 范圍時姊舵,進行自動裝箱晰绎,不會創(chuàng)建對象空間而是使用已有的空間
//手動轉換
Integer a = new Integer(3);
Integer b = new Integer(3);
System.out.println(a == b);? ? //false,地址空間不同
System.out.println(a.equals(b));? ? //true
//自動裝箱
Integer c = 127;
Integer d = 127;
System.out.println(c == d);? ? //true括丁,在byte范圍內自動裝箱使用已有空間
System.out.println(c.equals(d));? ? //true
二荞下、System 類
System 代表程序所在的系統(tǒng),提供了對應的一些系統(tǒng)屬性消息和系統(tǒng)操作史飞。System 類不能手動創(chuàng)建對象尖昏,因為構造方法被 private 修飾,組織外界創(chuàng)建對象构资。System 類中都是 static 方法抽诉,類名即可訪問。
System 類中常用的方法:
currentTimeMillis():獲取當前系統(tǒng)時間與1970年01月01日00:00點之間的毫秒差值
exit(int status):用來結束正在運行的Java程序吐绵,通常傳入 0 參數(shù)記為正常狀態(tài)掸鹅,其他為異常狀態(tài)
gc():用來運行 JVM 中的垃圾回收器,完成內存中垃圾的消除
getProperty(String key):用來獲取指定鍵(字符串名稱)中所記錄的系統(tǒng)屬性消息
arraycopy(Object src拦赠,int srcPos巍沙,Object dest,int desPos荷鼠,int length):從指定源數(shù)組中復制一個數(shù)組句携,復制從指定的位置開始,到目標數(shù)組的指定位置結束
三允乐、Math 類
Math 類是包含用于執(zhí)行基本數(shù)學運算的方法的數(shù)學工具類矮嫉,類似這樣的工具類削咆,代表能夠完成一系列功能的類,在使用他們時蠢笋,不用創(chuàng)建對象拨齐,該類中方法都為靜態(tài)方法。
Math 類中常用方法:
abs(double a):返回 double 值的絕對值
ceil(double a):返回結果為比參數(shù)值大的最小整數(shù)的 double 值
floor(double a):返回結果比參數(shù)值小的最大整數(shù)的 double 值
max(double a昨寞,double b):返回兩個參數(shù)中較大的值
min(double a瞻惋,double b):返回兩個參數(shù)中較小的值
pow(double a,double b):返回第一個參數(shù)的第二個參數(shù)次冪的值
random():產生一個大于等于0.0且小于1.0的double小數(shù)
round(double a):返回參數(shù)值四舍五入的結果
四援岩、Arrays 類
Arrays 類包含用來操作數(shù)組的各種方法歼狼,如果指定數(shù)組引用為 null,則訪問此類中的方法都會拋出空指針異常 NullPointerException享怀。
Arrays 類中常用方法:
sort(int[] a):將數(shù)組元素按數(shù)字升序排序
toString(int[] a):用來返回指定數(shù)組元素內容的字符串形式
binarySearch(int[] a):在有序數(shù)組中羽峰,查找給定元素出現(xiàn)的位置,沒有查到則返回-1(使用的是二分搜索法)
五添瓷、BigInteger 類
在Java中梅屉,long 型為最大的整數(shù)類型,如果超過了 long 型的數(shù)據(jù)鳞贷,就會被封裝成 BigInteger 對象坯汤,在?BigInteger 類中,實現(xiàn)四則運算都是方法來實現(xiàn)的悄晃,并不是采用運算符玫霎。
BigInteger 類的使用:
public static void main(String[] args) {
? ? //大數(shù)據(jù)封裝為BigInteger對象
? ? ? BigInteger big1 = new BigInteger("12345678909876543210");
? ? ? BigInteger big2 = new BigInteger("98765432101234567890");
? ? ? //add實現(xiàn)加法運算
? ? ? BigInteger bigAdd = big1.add(big2);
? ? ? //subtract實現(xiàn)減法運算
? ? ? BigInteger bigSub = big1.subtract(big2);
? ? ? //multiply實現(xiàn)乘法運算
? ? ? BigInteger bigMul = big1.multiply(big2);
? ? ? //divide實現(xiàn)除法運算
? ? ? BigInteger bigDiv = big2.divide(big1);
}
六凿滤、BigDecimal 類
在Java中妈橄,double 和 float 類型在運算中很容易丟失精度,造成數(shù)據(jù)的不準確性翁脆,可以使用 BigDecimal 類實現(xiàn)浮點數(shù)據(jù)的高精度運算
BigDecimal? 類的使用:
public static void main(String[] args) {
? ? //大數(shù)據(jù)封裝為BigDecimal對象
? ? BigDecimal big1 = new BigDecimal("0.09");
? ? BigDecimal big2 = new BigDecimal("0.01");
? ? //add實現(xiàn)加法運算
? ? BigDecimal bigAdd = big1.add(big2);
? ? BigDecimal big3 = new BigDecimal("1.0");
? ? BigDecimal big4 = new BigDecimal("0.32");
? ? //subtract實現(xiàn)減法運算
? ? BigDecimal bigSub = big3.subtract(big4);
? ? BigDecimal big5 = new BigDecimal("1.105");
? ? BigDecimal big6 = new BigDecimal("100");
? ? //multiply實現(xiàn)乘法運算
? ? BigDecimal bigMul = big5.multiply(big6);
}
對于浮點數(shù)據(jù)的除法運算,和整數(shù)不同,可能出現(xiàn)無限不循環(huán)小數(shù),因此需要對所需要的位數(shù)進行保留和選擇舍入模式