Java常用API(一)

API

Java的API(Application Programming Interface)也叫應用程序接口,是JDK中提供給我們使用的類,這些類將底層代碼封裝起來

Object類

Object類的概述

Object類是Java語言中的根類,是所有類的父類,它描述的所有子類方法都可以使用,所有類在創(chuàng)建對象時,最終找到的父類就是Object

equals 方法

equals方法用于比較兩個對象是否相同,其實就是比較兩給對象的內存地址是否相同,Object類中的equals方法內部就是使用==比較符
在Object類中原代碼為

public boolean equals(Object obj){
    return this == obj;
}

在開發(fā)中比較兩個對象是否相等意義不大,通常會根據(jù)對象中的屬性值進行比較,也就是在開發(fā)中需要從寫equals方法的屬性進行比較

下面描述一個人的類,并定義功能判斷是否為同齡人

public class Person extends Object{
    private String name;
    private int age;
    
    // 無參數(shù)構造方法
    public Person(){
    }
    // 有參數(shù)構造方法
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }
    // 重寫父類的equals方法
    public boolean equals(Object obj){
        // 判斷是當前調用的equals方法的對象和傳遞進來的對象是否是同一個
        if(this == obj){
            return true;
        }
        // 判斷是否傳遞進來的對象是否是Person類型
        // 對obj參數(shù)進行向下轉型,把obj轉成Person類型
        if(obj instanceof Person){
            Person p = (Person)obj;
            return this.age == p.age;
        }
        return false;       
    }
    // getters和setters
    ...
}

注意:在重寫Object中的equals方法時,public boolean equals(Object obj)的參數(shù)是Object類型,在調用屬性時,一定要進行類型轉換,在轉換之前必須對類型進行判斷

toString方法

toString方法返回該對象的字符串表示,一般默認返回的該字符串的內容是【對象類型@內存地址】
由于toString方法返回的結果是內存地址,而在實際的開發(fā)中,經常需要按照對象的屬性得到相應的字符串的表達形式,因此也需要重寫,比如Person類返回name

class Person extends Object{
    ...
    // 根據(jù)Person類的屬性重寫toString方法
    public String toString(){
    return name
    }
}

String類

String類的概述

查閱API中的String類的描述,發(fā)現(xiàn)String類代表的字符串,Java中的所有字符串(如“abc”)都作為此類的實例實現(xiàn)的
繼續(xù)查閱API發(fā)現(xiàn)說字符串是常量,它們在的值在創(chuàng)建后就不能更改,這是什么意思呢?其實就是說一旦這個字符串一旦確定了,那么就會在內存區(qū)域生成這個字符串,字符本生不能改變,但str變量中的記錄的地址可以改變
String源碼中private final char value[]定義為不可改變的數(shù)組

內存圖

符串有大量的重載的構造方法。通過String類的構造方法可以完成字符串對象的創(chuàng)建,那么,通過使用雙引號的方式創(chuàng)建對象與new的方式創(chuàng)建對象,有什么不同呢?看如下程序:

String str1 = "abc";
String str2 = new String("abc");
System.out.println(str1==str2);             //false
System.out.println(str1.equals(str2));      //true

因為String重寫了equals方法,建立了字符串自己的判斷相同的依據(jù)(通過字符串對象中的字符來判斷)

str1和str2的創(chuàng)建方式有什么不同呢?

  • str1創(chuàng)建,在內存中只有一個對象,這個對象在字符串常量池中
  • str2創(chuàng)建,在內存中有兩個對象,一個new的對象在堆中,一個字符串本身對象,在字符串常量池中

String的構造方法

構造方法是用來完成String對象的創(chuàng)建,下面給出了一部分構造方法需要在API中找到,并能夠使用下列構造方法創(chuàng)建對象

String類中的構造函數(shù)

  • String()構造一個空字符串對象
  • String(byte[] bytes)通過byte數(shù)組構造字符串對象
  • String(byte[] bytes,int offset,int length)通過byte數(shù)組,從offset開始,總共length長的字節(jié)構造字符串對象
  • String(char[] value) 通過char數(shù)組構造字符串對象
  • String(byte[] char,int offset,int length)通過char數(shù)組,從offset開始,總共length長的字節(jié)構造字符串對象
  • String(String original) 構造一個original的副本,拷貝一個original
  • String(StringBuffer buffer)通過StringBuffer數(shù)組構造字符串對象

String類的常用方法

  • length( )查看字符串長度
  • charAt(int index)獲取字符串中的某個值
  • contains(String str)判斷一個字符串是否包含另一個字符串
  • getBytes( )將字符串轉換為字節(jié)數(shù)組
  • toCharArray( )將字符串轉換為字符數(shù)組
  • compareTo( )比較兩個字符串的大小,相等返回0,大于返回正數(shù),小于返回負數(shù)
  • compareToIgnoreCase( )比較兩個字符串的大小,不考慮大小寫
  • toUpperCase( )、toLowerCase( )大、小寫轉換
  • indexOf( )字符串位置查找。indexOf(int ch):在此對象表示的字符序列中第一次出現(xiàn)該字符的索引;如果未出現(xiàn)該字符,則返回 -1。 indexOf(int ch,int fromIndex): 在此對象表示的字符序列中第一次出現(xiàn)的大于或等于 fromIndex 的字符的索引;如果未出現(xiàn)該字符,則返回 -1。
  • lastIndexOf( )字符串位置查找,與indexOf()查找順序相反
  • startsWith(String str)測試字符串以指定的前綴開始,后面還可以添加指定的索引,表示從指定的索引開始的字符串是否以指定的前綴開始
  • endsWith(String str )測試字符串以指定的后綴結束
  • substring( )substring(int beginIndex) 返回一個新的字符串,它是此字符串的一個子字符串。substring(int beginIndex, int endIndex) 返回一個新字符串,它是此字符串的一個子字符串。(左包含右不包含)
  • split(String regex )根據(jù)給定正則表達式的匹配拆分此字符串。
  • trim( )用戶數(shù)據(jù)后臺校驗前的過濾,返回字符串的副本,忽略前導空白和尾部空白

StringBuffer類

查閱StringBuffer的API,StringBuffer又稱為可變字符序列,它是一個類似于 String的字符串緩沖區(qū),通過某些方法調用可以改變該序列的長度和內容。
原來StringBuffer是個字符串的緩沖區(qū),即就是它是一個容器,容器中可以裝很多字符串。并且能夠對其中的字符串進行各種操作。

StringBuffer的方法使用

  • append(String str)將指定字符串追加到此字符序列
  • delete(int start, int end)移除此序列的字符串中的字符
  • insert(int offset, String str)將字符串插入到此字符串序列中
  • replace(int start, int end, String str)替換相應位子的字符串
  • reverse()反轉字符串
  • toString()反回序列中數(shù)據(jù)的字符串(是String類型)

StringBuilder類

查閱API發(fā)現(xiàn)還有一個StringBuilder類,它也是字符串緩沖區(qū),StringBuilder與它和StringBuffer的有什么不同呢?
我們閱讀StringBuilder的API說明發(fā)現(xiàn),它也是一個可變的字符序列。此類提供一個與 StringBuffer兼容的 API,但不保證同步。該類被設計用作 StringBuffer的一個簡易替換,用在字符串緩沖區(qū)被單個線程使用的時候(這種情況很普遍)。如果可能,建議優(yōu)先采用該類,因為在大多數(shù)實現(xiàn)中,它比 StringBuffer 要快

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容