Java經典常用類總結(必須掌握!)
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);
}
}
結果:
相關文章
- Java必須掌握的Spring常用註解JavaSpring
- 5大資料經典模型詳解——資料分析師必須掌握大資料模型
- 常用Java集合類總結Java
- Java 常用類總結(SE基礎)Java
- 學習Linux必須掌握的命令!經驗分享Linux
- 文章經典總結
- 經典 backbone 總結
- C語言必須要記住的經典程式C語言
- JVM-Java工程師必須掌握的知識點JVMJava工程師
- Git中~你必須掌握的!Git
- Java程式設計師必須掌握的7個Java效能指標!Java程式設計師指標
- 【Linux常用命令①】程式設計師必須掌握的Linux命令Linux程式設計師
- 程式設計師必須掌握的資料結構 2程式設計師資料結構
- 程式設計師必須掌握的資料結構 1程式設計師資料結構
- Java程式設計師必須掌握的5個註解!Java程式設計師
- java開發必須要掌握的20個核心技術Java
- Java開發必須掌握的線上問題排查命令Java
- 必須要掌握的重要目錄
- 必須掌握的10個Linux命令!Linux
- 前端必須掌握的知識點前端
- CSS中那些必須掌握的概念CSS
- 學習Linux必須掌握的命令!Linux
- java常用Api總結JavaAPI
- Java常用類,這一次幫你總結好!Java
- 5個產品經理必須掌握的,小程式裂變案例
- 為什麼說 Java 程式設計師必須掌握 Spring Boot ?Java程式設計師Spring Boot
- Java程式設計師必須掌握的Spring依賴管理原理Java程式設計師Spring
- Java集合類操作最佳化經驗總結Java
- Java十大經典排序演算法最強總結Java排序演算法
- Android 之 Notification 必須掌握知識點Android
- 必須掌握的Linux使用者組Linux
- 技術人必須掌握能力——深度思考
- 【5】進大廠必須掌握的面試題-Java面試-spring面試題JavaSpring
- 【4】進大廠必須掌握的面試題-Java面試-jdbc面試題JavaJDBC
- CNN結構演變總結(一)經典模型CNN模型
- 2萬字70道Java經典面試題總結(附答案)Java面試題
- Mysql系列第三講 管理員必備技能(必須掌握)MySql
- JAVASE常用的類及其方法總結Java