Java常用API(三)

API

基本類(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)型

image.png

其中需要注意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ù)


image.png

Arrays類(lèi)

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


image.png

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)

doublefloat類(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)行保留和選擇舍入模式
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,740評(píng)論 18 399
  • 一、Java 簡(jiǎn)介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚(yú)_t_閱讀 4,564評(píng)論 1 44
  • 這是唐美人第9彈:絳娘的故事 家里的七姑八姨,有沒(méi)有把你問(wèn)煩? 沒(méi)對(duì)象的,有沒(méi)有合適目標(biāo)? 有對(duì)象的,什么時(shí)候結(jié)婚...
    遇見(jiàn)蘭月閱讀 959評(píng)論 0 8

友情鏈接更多精彩內(nèi)容