
基本類(lèi)型包裝類(lèi)
Java語(yǔ)言是一個(gè)面向?qū)ο蟮恼Z(yǔ)言,但是Java中的基本數(shù)據(jù)類(lèi)型卻是不面向?qū)ο蟮模@在實(shí)際使用時(shí)存在很多的不便,為了解決這個(gè)不足,在設(shè)計(jì)類(lèi)時(shí)為每個(gè)基本數(shù)據(jù)類(lèi)型設(shè)計(jì)了一個(gè)對(duì)應(yīng)的類(lèi)進(jìn)行代表,這樣八個(gè)和基本數(shù)據(jù)類(lèi)型對(duì)應(yīng)的類(lèi)統(tǒng)稱為包裝類(lèi)(Wrapper Class),有些地方也翻譯為外覆類(lèi)或數(shù)據(jù)類(lèi)型

其中需要注意
int對(duì)應(yīng)的是Integer,char對(duì)應(yīng)的Character,其他6個(gè)都是基本類(lèi)型首字母大寫(xiě)即可
將字符串轉(zhuǎn)為基本類(lèi)型
int i = Integer.parseInt("123");
將基本數(shù)值轉(zhuǎn)成字符串
// 基本類(lèi)型直接與""連接
String s1 = 123 + "";
// 調(diào)用String的valueOf方法
String s2 = String.valueOf(123);
// 調(diào)用包裝類(lèi)中的toString方法
String s3 = Integer.toString(123);
Integer類(lèi)的構(gòu)造方法
Integer(String str)將數(shù)值格式的字符串傳遞到Integer類(lèi)的構(gòu)造方法中,轉(zhuǎn)成基本數(shù)據(jù)類(lèi)型,調(diào)用非靜態(tài)方法intValue()
Integer in = new Integer("100");
int i = in.intValue();
system.out.println(i--); // 100,先打印,在--
自動(dòng)裝箱拆箱
自動(dòng)裝箱就是Java自動(dòng)將原始類(lèi)型值轉(zhuǎn)換成對(duì)應(yīng)的對(duì)象,比如將int的變量轉(zhuǎn)換成Integer對(duì)象,這個(gè)過(guò)程叫做裝箱,反之將Integer對(duì)象轉(zhuǎn)換成int類(lèi)型值,這個(gè)過(guò)程叫做拆箱。因?yàn)檫@里的裝箱和拆箱是自動(dòng)進(jìn)行的非人為轉(zhuǎn)換,所以就稱作為自動(dòng)裝箱和拆箱
Integer i = 1; // 自動(dòng)動(dòng)裝箱Integer i = Integer.valueOf(1)
i = i + 2 // 將等號(hào)右邊的i對(duì)象轉(zhuǎn)成基本數(shù)值(自動(dòng)拆箱), i.intValue() + 1;
// 運(yùn)算完成后,再次裝箱,把基本數(shù)值轉(zhuǎn)成對(duì)象
注意
當(dāng)數(shù)值在byte范圍之內(nèi)時(shí),進(jìn)行自動(dòng)裝箱,不會(huì)新創(chuàng)建對(duì)象空間而是使用醫(yī)來(lái)已有的空間
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i==j); // false 對(duì)象地址
System.out.println(i.equals(j)); // true 繼承Object重寫(xiě)equals,比較的對(duì)象數(shù)據(jù)
Integer a = 500; //Integer integer=Integer.valueOf(500)
Integer b = 500; //integer=new Integer(500);
System.out.println(a==b); //false
System.out.println(a.equals(b)); //true
//數(shù)據(jù)在byte(-128~127)范圍內(nèi),JVM不會(huì)從新new對(duì)象
Integer aa = 127; // Integer aa = new Integer(127)
Integer bb = 127; // Integer bb = aa;
System.out.println(aa==bb); //true
System.out.println(aa.equals(bb)); //true
System類(lèi)
在API中System類(lèi)介紹的比較簡(jiǎn)單,我們給出定義,System中代表程序所在系統(tǒng),提供了對(duì)應(yīng)的一些系統(tǒng)屬性信息,和系統(tǒng)操作
System類(lèi)不能手動(dòng)創(chuàng)建對(duì)象,因?yàn)闃?gòu)造方法被private修飾,阻止外界創(chuàng)建對(duì)象。System類(lèi)中的都是static方法,類(lèi)名訪問(wèn)即可。在JDK中,有許多這樣的類(lèi)
-
currentTimeMillis()獲取當(dāng)前系統(tǒng)時(shí)間與1970年01月01日00:00點(diǎn)之間的毫秒差值 -
exit(int status)用來(lái)結(jié)束正在運(yùn)行的Java程序。參數(shù)傳入一個(gè)數(shù)字即可。通常傳入0記為正常狀態(tài),其他為異常狀態(tài) -
gc()用來(lái)運(yùn)行JVM中的垃圾回收器,完成內(nèi)存中垃圾的清除。 -
getProperty(String key)用來(lái)獲取指定鍵(字符串名稱)中所記錄的系統(tǒng)屬性信息
System類(lèi)的方法練習(xí)
驗(yàn)證for循環(huán)打印數(shù)字1-9999所需要使用的時(shí)間(毫秒)
public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i=0; i<10000; i++) {
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("共耗時(shí)毫秒:" + (end-start) );
}
將src數(shù)組中前3個(gè)元素,復(fù)制到dest數(shù)組的前3個(gè)位置上
public static void main(String[] args) {
int[] src = new int[]{1,2,3,4,5};
int[] dest = new int[]{6,7,8,9,10};
System.arraycopy( src, 0, dest, 0, 3);
}
// 代碼運(yùn)行后:兩個(gè)數(shù)組中的元素發(fā)生了變化
// src數(shù)組元素[1,2,3,4,5]
// dest數(shù)組元素[1,2,3,9,10]
Math類(lèi)
Math 類(lèi)是包含用于執(zhí)行基本數(shù)學(xué)運(yùn)算的方法的數(shù)學(xué)工具類(lèi),如初等指數(shù)、對(duì)數(shù)、平方根和三角函數(shù)

Arrays類(lèi)
此類(lèi)包含用來(lái)操作數(shù)組(比如排序和搜索)的各種方法。需要注意,如果指定數(shù)組引用為 null,則訪問(wèn)此類(lèi)中的方法都會(huì)拋出空指針異常NullPointerException

BigInteger類(lèi)
java中long型為最大整數(shù)類(lèi)型,對(duì)于超過(guò)long型的數(shù)據(jù)如何去表示呢,在Java的世界中,超過(guò)long型的整數(shù)已經(jīng)不能被稱為整數(shù)了,它們被封裝成BigInteger對(duì)象,在BigInteger類(lèi)中,實(shí)現(xiàn)四則運(yùn)算都是方法來(lái)實(shí)現(xiàn),并不是采用運(yùn)算符
public static void main(String[] args) {
// 大數(shù)據(jù)封裝為BigInteger對(duì)象
BigInteger big1 = new BigInteger("12345678909876543210");
BigInteger big2 = new BigInteger("98765432101234567890");
// add實(shí)現(xiàn)加法運(yùn)算
BigInteger bigAdd = big1.add(big2);
// subtract實(shí)現(xiàn)減法運(yùn)算
BigInteger bigSub = big1.subtract(big2);
// multiply實(shí)現(xiàn)乘法運(yùn)算
BigInteger bigMul = big1.multiply(big2);
// divide實(shí)現(xiàn)除法運(yùn)算
BigInteger bigDiv = big2.divide(big1);
}
BigDecimal類(lèi)
double和float類(lèi)型在運(yùn)算中很容易丟失精度,造成數(shù)據(jù)的不準(zhǔn)確性
public static void main(String[] args) {
// add實(shí)現(xiàn)加法運(yùn)算
BigDecimal big1 = new BigDecimal("0.09");
BigDecimal big2 = new BigDecimal("0.01");
BigDecimal bigAdd = big1.add(big2);
// subtract實(shí)現(xiàn)減法運(yùn)算
BigDecimal big3 = new BigDecimal("1.0");
BigDecimal big4 = new BigDecimal("0.32");
BigDecimal bigSub = big3.subtract(big4);
// multiply實(shí)現(xiàn)乘法運(yùn)算
BigDecimal big5 = new BigDecimal("1.105");
BigDecimal big6 = new BigDecimal("100");
BigDecimal bigMul = big5.multiply(big6);
// divide實(shí)現(xiàn)除法運(yùn)算
BigDecimal big7 = new BigDecimal("1.0");
BigDecimal big8 = new BigDecimal("0.3");
BigDecimal bigDiv = big7.divide(big8,3, BigDecimal.ROUND_HALF_UP);
// 對(duì)于浮點(diǎn)數(shù)據(jù)的除法運(yùn)算,和整數(shù)不同,可能出現(xiàn)無(wú)限不循環(huán)小數(shù),因此需要對(duì)所需要的位數(shù)進(jìn)行保留和選擇舍入模式