JAVA中Object的常用方法
JAVA中Object的使用
首先引入API的概念
API:Application Programming Interface應(yīng)用編程接口,一切可以調(diào)用的東西都是API。
java.lang包,這個(gè)包會(huì)自動(dòng)導(dǎo)入。
java.lang.Object
java.lang.String
java.lang.StringBuilder/StringBuffer
正則表達(dá)式
包裝類等
1. 概念
所有對象的頂級父類
存在于java.lang包中,這個(gè)包不需要我們手動(dòng)導(dǎo)包
2. 常用方法
boolean equals(Object obj) 指示其他某個(gè)對象是否與此對象“相等”。 protected void finalize() 當(dāng)垃圾回收器確定不存在對該對象的更多引用時(shí),由對象的垃圾回收器調(diào)用此方法。 int hashCode() 返回該對象的哈希碼值,哈希map中用到,具體可以查看數(shù)據(jù)結(jié)構(gòu)。 String toString() 返回該對象的字符串表示。
3. toString()
默認(rèn)返回 類名@地址 的格式,來展示對象的地址值,如:a00000.Student@a0224e7。
如果想看屬性值我們可以重寫這個(gè)方法,重寫后返回的就是把屬性值拼接成一個(gè)字符串。
如:Student [name=大強(qiáng), age=20, id=10001]
//測試Object用法 public class TestObject { public static void main(String[] args) { //創(chuàng)建對象測試 Person p = new Person("熊大",20,10,"森林"); System.out.println(p);//要是不重寫toString()就是使用的Object提供的默認(rèn)方式只能打印對象在內(nèi)存的地址 System.out.println(p);//由于重寫了toString()所以打印的是屬性的值 } } //定義類,提供屬性 class Person{ //構(gòu)造:source-generate constrctor using fileds public Person() {} public Person(String name, int age, double salary, String addr) { this.name = name; this.age = age; this.salary = salary; this.addr = addr; } //屬性 private String name; private int age; private double salary; private String addr; //set() get() 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; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } //toString():source - generate toString()-ok @Override//重寫的是Object提供的toString()是為了查看屬性值 public String toString() { return "Person [name=" + name + ", age=" + age + ", salary=" + salary + ", addr=" + addr + "]"; } }
4. equals(Object obj)
當(dāng)前對象和參數(shù)對象比較大小,默認(rèn)是比較內(nèi)存地址,如果要比較對象的屬性,可以重寫該方法。
public class TestArea { public static void main(String[] args) { //基礎(chǔ)類型是按值比較 int i1 = 10; int i2 = 10; int i3 = 12; System.out.println(i1==i2);//true System.out.println(i1==i3); //false //對象為引用類型,引用類型按內(nèi)存地址比較 //如果不想比較地址,可以重寫equals方法 Tiger t1 = new Tiger(); Tiger t2 = new Tiger(); Tiger t3 = t1; System.out.println(t1); System.out.println(t2); System.out.println(t3); System.out.println(t1.equals(t2));//false System.out.println(t1 == t2);//false System.out.println(t1.equals(t3));//true System.out.println(t1 == t3);//true } }
5. hashCode()
返回該對象的哈希碼值。默認(rèn)為對象的內(nèi)存地址,可根據(jù)需要重寫
//測試equals() == public class TestObject { public static void main(String[] args) { //1,==比較八大基本類型時(shí):判斷的是值 int a = 1; int b = 1; System.out.println(a==b);//true //2,==比較對象時(shí),比較的是對象的地址值 Integer x = 5; Integer y = 10; Integer z = x;//把x的地址賦值給了z System.out.println(x==y);//false System.out.println(x==z);//true //3,equals()用來比較對象存著的值 System.out.println(x.equals(z));//true //4,測試hashCode()哈希值 System.out.println(x.hashCode());//5 System.out.println(y.hashCode());//10 System.out.println(z.hashCode());//5 } } //測試equals() == public class TestObject { public static void main(String[] args) { //1,==比較八大基本類型時(shí):判斷的是值 int a = 1; int b = 1; System.out.println(a==b);//true //2,==比較對象時(shí),比較的是對象的地址值 Integer x = 5; Integer y = 10; Integer z = x;//把x的地址賦值給了z System.out.println(x==y);//false System.out.println(x==z);//true //3,equals()用來比較對象存著的值 System.out.println(x.equals(z));//true //4,測試hashCode()哈希值 System.out.println(x.hashCode());//5 System.out.println(y.hashCode());//10 System.out.println(z.hashCode());//5 } }
到此這篇關(guān)于JAVA中Object的使用的文章就介紹到這了,更多相關(guān)java object使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳細(xì)分析Java中String、StringBuffer、StringBuilder類的性能
在Java中,String類和StringBuffer類以及StringBuilder類都能用于創(chuàng)建字符串對象,而在分別操作這些對象時(shí)我們會(huì)發(fā)現(xiàn)JVM執(zhí)行它們的性能并不相同,下面我們就來詳細(xì)分析Java中String、StringBuffer、StringBuilder類的性能2016-05-05解決使用@ManyToMany查詢數(shù)據(jù)時(shí)的死循環(huán)問題
這篇文章主要介紹了解決使用@ManyToMany查詢數(shù)據(jù)時(shí)的死循環(huán)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Java中的CopyOnWriteArrayList深入解讀
這篇文章主要介紹了Java中的CopyOnWriteArrayList深入解讀,在 ArrayList 的類注釋上,JDK 就提醒了我們,如果要把 ArrayList 作為共享變量的話,是線程不安全的,需要的朋友可以參考下2023-12-12Java使用CompletableFuture進(jìn)行非阻塞IO詳解
這篇文章主要介紹了Java使用CompletableFuture進(jìn)行非阻塞IO詳解,CompletableFuture是Java中的一個(gè)類,用于支持異步編程和處理異步任務(wù)的結(jié)果,它提供了一種方便的方式來處理異步操作,并允許我們以非阻塞的方式執(zhí)行任務(wù),需要的朋友可以參考下2023-09-09如何基于Springboot完成新增員工功能并設(shè)置全局異常處理器
最近工作中遇到了做一個(gè)管理員工信息的功能,下面這篇文章主要給大家介紹了關(guān)于如何基于Springboot完成新增員工功能并設(shè)置全局異常處理器的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11Java如何實(shí)現(xiàn)一個(gè)簡化版的Stream框架
這篇文章主要為大家詳細(xì)介紹了一個(gè)簡化版的 Stream 實(shí)現(xiàn),展示了如何通過延遲執(zhí)行來處理數(shù)據(jù)流,感興趣的小伙伴可以跟隨小編一學(xué)習(xí)一下2024-10-10Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理解讀
這篇文章主要介紹了Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理詳解,CountDownLatch中調(diào)用await方法線程需要等待所有調(diào)用countDown方法的線程執(zhí)行,這就很適合一個(gè)業(yè)務(wù)需要一些準(zhǔn)備條件,等準(zhǔn)備條件準(zhǔn)備好之后再繼續(xù)執(zhí)行,需要的朋友可以參考下2023-12-12