Java經典常用類總結(必須掌握!)

zjd真可愛發表於2020-11-18

java的學習過程中,我們經常會接觸到不同的類,有些類我們經常在使用,我們稱之為常用類,我就我自己在java常用類的學習進行一下分享。

1.Object類:public class Object

類 Object 是類層次結構的根類。每個類都使用 Object 作為超類。所有物件(包括陣列)都實現這個類的方法,簡單來說,Object類是所有類的父類,所有類都預設繼承了Objet類
這裡我主要講幾個Object常用的方法
1.hashCode()方法:
格式:public int hashCode()
概述:返回該物件的雜湊碼值。
(這裡可能有部分同學不知道雜湊碼值是什麼?大家只需要先知道hashCode方法通過將該物件的內部地址轉換成一個整數來實現)
程式碼展示:

public class ObjectTest{
public static void main(String[] args){
  //建立Object類物件
  ObjectTest o1 = new ObjectTest();
  ObjectTest o2 = new ObjectTest();
  ObjectTest o3 = o2;
  System.out.println(o1.hashCode());
  System.out.println(o2.hashCode());
  System.out.println(o3.hashCode());
}
}

結果如下:
在這裡插入圖片描述
大家可以看出:此時這幾行整數就是通過地址轉化而來
2.getClass()方法:
格式:public final Class<?> getClass()
概述:
返回值:
表示此物件執行時類的 Class 物件。

public class ObjectTest2 {
    public static void main(String[] args) {
        ObjectTest2 o1 = new ObjectTest2();
        Class c = o1.getClass();
        System.out.println(c.getName());
    }
}

3.toString()方法:
格式:public String toString()
概述:返回該物件的字串表示。
通常,toString 方法會返回一個“以文字方式表示”此物件的字串。結果應是一個簡明但易於讀懂的資訊表示式。建議所有子類都重寫此方法。

//我們提前定義好一個學生類
public class Student {
    private  String name;
    private int age;
    //建構函式
    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
    return name;
}

    public void setName(String name) {
    this.name = name;
}

    public int getAge() {
    return age;
}

    public void setAge(int age) {
    this.age = age;
}

@Override
public String toString() {
    return "Student{" +
            "name='" + name + '\'' +
            ", age=" + age +
            '}';
}

//然後定義我們的測試類
public class ObjectTest {
    public static void main(String[] args) {
     Student student = new Student();
     System.out.println(student.toString());
}
}

結果如下:
在這裡插入圖片描述
其實我們重寫toString方法就可以幫我們少寫一個顯示的方法!
4.equals()方法:
格式:public boolean equals(Object obj)
概述:比較兩個物件是否相等

//equals在我之前的一篇文章中,我是分享過的,今天我主要分享一下關於equals的面試題
//面試題:==與equals的區別?
//1.==:
//     基本資料型別:等號比較的是值是否相同
//     引用資料型別:等號比較的是地址值是否相同
//
//2.equals
//     只能引用資料型別:一般情況下,和==作用相同
// 但有時候,我們會根據需要重寫toString方法,比較屬性值
public class ObjectTest {
    public static void main(String[] args) {
        Student student = new Student("tom",18);
        Student student2 = new Student("tom",18);
        boolean flag= student.equals(student2);
        System.out.println(flag);//重寫equals變成true
        System.out.println("__________________________________");
        Student student3 = student;
        boolean flag2 = student3.equals(student2);
        System.out.println(flag2);//重寫equals變成true
    }
}

結果如下:因為我在學生類中重寫了方法

在這裡插入圖片描述

2.String類和StringBuffer類和Stringbuilder類

首先,我們來說String類。
String類,我之前也用初步的介紹過,這次我主要分享一下類中常用的方法:
概述:
String 類代表字串。Java 程式中的所有字串字面值(如 “abc” )都作為此類的例項實現。
字串是常量;它們的值在建立之後不能更改。
程式碼測試:

String z = "HelloWorld!";
        //獲取字串長度
        System.out.println(z.length());
        //獲取指定索引處的字元
        System.out.println(z.charAt(4));
        //返回指定位置的字元在此字串出現的第一次索引
        System.out.println(z.indexOf('o'));
        //返回指定位置的字元在當前字串出現的第一次索引
        System.out.println(z.indexOf("oWo"));
        //返回指定字元在指定位置後出現的第一次索引
        System.out.println(z.indexOf("o",2));
        //返回指定字串在指定位置後出現的第一次索引
        System.out.println(z.indexOf("or",2));
        //從指定位置擷取當前位置字串
        System.out.println(z.substring(5));
        //從指定位置開始擷取到指定位置結束當前位置字串
        System.out.println(z.substring(2,5));

結果如下:

在這裡插入圖片描述
StringBuffer類:
概述:
執行緒安全的可變字元序列。
之前String是不可變的序列,那麼StringBuffer即是可變的序列:

public class StringBufferTest{
public static void main(String args[]){
StringBuffer buf = new StringBuffer();
buf.append("zjd");
for(int i=0;i<100;i++){
buf.append(i);
}
System.out.println(buf);
}
}

由上述程式碼:我們可以看見把StringBuffer的例項化物件放進for迴圈,可實現字串的改變
程式碼展示:

//接下來我們看一下StringBuffer常用的方法
 StringBuffer stringBuffer2 = new StringBuffer();
        stringBuffer2.append(666);//末尾新增
        System.out.println(stringBuffer2);
        stringBuffer2.append(3.14);
        System.out.println(stringBuffer2);
        stringBuffer2.insert(4,"abc");//指定索引位置,新增
        System.out.println(stringBuffer2);
        stringBuffer2.deleteCharAt(4);//刪除指定索引位置的元素
        System.out.println(stringBuffer2);
        stringBuffer2.delete(1,3);//刪除指定一段
        System.out.println(stringBuffer2);
        stringBuffer2.replace(1,3,"zjd");//指定索引區間替換
        System.out.println(stringBuffer2);
        stringBuffer2.reverse();
        System.out.println(stringBuffer2);
        
        //擷取方法(複製取出,本身沒變)
        System.out.println(stringBuffer2.substring(1,3));
        System.out.println(stringBuffer2.substring(2));

結果如下:
在這裡插入圖片描述
StringBuilder類和StringBuffer類用法差不多,這裡我不做說明!

3.面試題講解:

1.String和StringBuff和StringBuilder區別?
String:不可變序列
StringBuffer:可變序列,多執行緒,安全
StringBuilder:可變序列,單執行緒,不安全
2.StringBuffer和陣列的區別?
都是容器,可以用來存資料但是陣列只能存一種資料,但是StringBuffer可以存很多種型別資料,不過最終結果都是字串資料

4.Arrays類

概述:
該類包含用於運算元組的各種方法(例如排序和搜尋)。
常用方法:
遍歷:public static String toString(int[] a)
排序:public static void sort(int[] a)
查詢:public static int binarySearch(int[] a,int key) 二分查詢,查詢前必須排序

//我們來程式碼測試一下
public class ArrayDemo4 {
    public static void main(String[] args) {
        int arr[] = {10,8,15,21,4,7};
        System.out.println("排序前:");
        System.out.println(Arrays.toString(arr));
        System.out.println("排序後:");
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        System.out.println("查詢:");
        int index= Arrays.binarySearch(arr,21);
        System.out.println(index);
    }
}

結果如下:
在這裡插入圖片描述

5.包裝類

概述:
基本型別的包裝類:將我們的基本型別包裝起來,可以新增相關方法,簡化操作
格式:
byte----Byte
short—Short
int-----Integer
long----Long
float—Float
double–Double
char----Character
boolean–Boolean
程式碼展示:

//進位制轉化
System.out.println(Integer.toBinaryString(66));//二進位制
System.out.println(Integer.toOctalString(66));//八進位制
System.out.println(Integer.toHexString(66));//十六進位制
//判斷是否在int範圍內
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);

結果如下:
在這裡插入圖片描述
構造方法:

/**
 * Integer構造方法
 * public Integer(int value):構造一個新分配的 Integer 物件,它表示指定的 int 值。
 * public Integer(String s)
 *         throws NumberFormatException:構造一個新分配的 Integer 物件,它表示 String 引數所指示的 int 值。
 */
public class integerDemo2 {
    public static void main(String[] args) {
        //public Integer(int value)
        Integer integer = new Integer(88);
        System.out.println("toString:"+integer.toString());

        //public Integer(String s)
        Integer integer1 = new Integer("88");
        System.out.println("toString:"+integer1.toString());
        Integer integer2 = new Integer("abc88");
        System.out.println("toString:"+integer2.toString());//注意:字串中只能含有數字,不能有其他字元
    }
}

結果如下:
在這裡插入圖片描述
分析:
當我們輸出“abc88"出現了報錯,所以我們得出結論:
字串中只能含有數字,不能有其他字元

6.關於int 和String的轉化

 //1.int------String
int num=88;
String s=""+88;
System.out.println("s:"+s);

//2.
String s1 = String.valueOf(num);
System.out.println("s1:"+s1);

//3.
Integer integer = new Integer(num);
String s2 = integer.toString();
System.out.println("s2:"+s2);

//4.
String s3 = Integer.toString(num);
System.out.println("s3:"+s3);

System.out.println("__________________________________");

//1.String-----int
Integer i = new Integer(s);
int a = i.intValue();
System.out.println("a:"+a);

//2.
int b = Integer.parseInt(s);
System.out.println("b:"+b);

結果程式碼:
在這裡插入圖片描述

7.自動裝箱和拆箱

/**
 * 針對包裝類的一種新特性:
 *         自動裝箱:將基本型別轉換成包裝類
 *         自動拆箱:將包裝類轉化成基本型別
 *
 *    注意事項:在使用自動拆箱的過程中,建議先判斷是否為null,然後在使用
 */
public class integerDemo4 {
    public static void main(String[] args) {
        Integer integer = new Integer(88);
        Integer integer1 = 100;//自動裝箱
        integer1 +=21;//自動拆箱,然後再一次自動裝箱
        System.out.println("i1:"+integer1);
    }
}

結果:
在這裡插入圖片描述

相關文章