Java深入講解Object類(lèi)常用方法的使用
1.Object類(lèi)的常用方法
| 方法 | 功能 |
|---|---|
| public Boolean equals(Object obj) | 判斷兩個(gè)對(duì)象變量所指向的是否為同一個(gè)對(duì)象 |
| public String toString() | 將調(diào)用該方法的對(duì)象轉(zhuǎn)換為字符串返回 |
| public final Class getClass | 返回運(yùn)行該方法的對(duì)象所屬的類(lèi) |
--------------??分割線(xiàn)??--------------
2.equals()方法
- 與比較運(yùn)算符"=="相同,equals()運(yùn)算符可以比較兩個(gè)對(duì)象是否相等,equals()方法定義在Object類(lèi)中,由于Object類(lèi)是所有類(lèi)的父類(lèi),所以在任何類(lèi)都可以使用。
- 在字符串類(lèi)中也包含了一個(gè)equals()方法,對(duì)于字符串變量來(lái)說(shuō),使用"=="運(yùn)算符和使用equals()方法是不同的,前者是用來(lái)比較兩個(gè)變量本身的值,即對(duì)象在內(nèi)存中的首地址,而equal()方法則是比較兩個(gè)字符串包含的內(nèi)容是否相等。
關(guān)于字符串的操作,Java在程序運(yùn)行時(shí)會(huì)維護(hù)一個(gè)字符串池,對(duì)于一些可共享的字符串對(duì)象,會(huì)先在字符串池中判斷是否有相同的String內(nèi)容,如果有就直接返回,不用創(chuàng)建新的String對(duì)象,節(jié)省了內(nèi)存空間,當(dāng)在程序中直接使用“"”括起來(lái)的字符串時(shí),該字符串就放在字符串池里。
實(shí)例1:使用類(lèi)和字符串兩種對(duì)象比較運(yùn)算符"=="和equals()方法的不同(代碼在文末)
對(duì)于非字符串類(lèi)型的變量來(lái)說(shuō),兩種方法都是比較所指的對(duì)象在堆內(nèi)存中的首地址。即兩個(gè)類(lèi)類(lèi)型的變量是否指向同一個(gè)對(duì)象。
3.toString方法
該方法的功能是將調(diào)用該方法的對(duì)象的內(nèi)容轉(zhuǎn)換成字符串,并返回。由于返回值是沒(méi)有意義的字符串,所以可以根據(jù)需要重新定義該方法覆蓋父類(lèi)中的同名方法。
4.getClass方法
該方法的功能是返回運(yùn)行時(shí)的對(duì)象所屬的類(lèi)。
Class 對(duì)象由JVM自動(dòng)產(chǎn)生,每一個(gè)類(lèi)在被加載的時(shí)候都會(huì)自動(dòng)為其生成一個(gè)Class類(lèi)對(duì)象,Class類(lèi)沒(méi)有構(gòu)造方法。可以通過(guò)Object類(lèi)的getClass()方法來(lái)取得對(duì)象對(duì)應(yīng)的Class對(duì)象,再通過(guò)Class對(duì)象的一些方法獲取類(lèi)的基本信息。
Class類(lèi)中的getName()方法:
通過(guò)getClass()方法返回class類(lèi)型,根據(jù)繼承的“即是”原則,所有類(lèi)的對(duì)象即是Object類(lèi)的對(duì)象,當(dāng)前對(duì)象this調(diào)用Object的getClass()方法,得到當(dāng)前對(duì)象所在的Class類(lèi),再調(diào)用Class中的getName()方法得到this的類(lèi)名字符串。同樣使用getSuperclass()方法獲取父類(lèi)。
實(shí)例2:getClass()方法的使用:(代碼在文末)
5.對(duì)象運(yùn)算符instanceof
對(duì)象運(yùn)算符instanceof用來(lái)測(cè)試一個(gè)指定對(duì)象是否是指定類(lèi)或它的子類(lèi)的實(shí)例。
作用:用于強(qiáng)制類(lèi)型轉(zhuǎn)換之前檢查對(duì)象的真實(shí)類(lèi)型以避免類(lèi)型轉(zhuǎn)換異常,提高了代碼的健壯性。
該方法的返回值是boolean類(lèi)型。
實(shí)例Java代碼
實(shí)例1:
//實(shí)例1:使用類(lèi)和字符串兩種對(duì)象比較運(yùn)算符"=="和equals()方法的不同
//filename:A_2.java
class A{
int a=1;
}
public class A_2{
public static void main(String[] args){
A obj1=new A();
A obj2=new A();
String s1,s2,s3="abcd",s4="abcd";
s1=new String("abcd");
s2=new String("abcd");
System.out.println("s1.equals(s2)是"+(s1.equals(s2)));//true
System.out.println("s1==s2是"+(s1==s2));//false
System.out.println("s1.equals(s3)是"+(s1.equals(s3)));//true
System.out.println("s1==s2是"+(s1==s2));//false
System.out.println("s3.equals(s4)是"+(s3.equals(s4)));//true
System.out.println("s3==s4是"+(s3==s4));//true
System.out.println("obj1==obj2是"+(obj1==obj2));//false
System.out.println("obj1.equals(obj2)是"+(obj1.equals(obj2)));//false
obj1=obj2;
System.out.println("obj1=obj2后obj1==obj2是"+(obj1==obj2));//true
System.out.println("obj1=obj2后obj1.equals(obj2)是"+(obj1.equals(obj2)));//true
}
}
/**
s1.equals(s2)是true
s1==s2是false
s1.equals(s3)是true
s1==s2是false
s3.equals(s4)是true
s3==s4是true
obj1==obj2是false
obj1.equals(obj2)是false
obj1=obj2后obj1==obj2是true
obj1=obj2后obj1.equals(obj2)是true
*/
實(shí)例2:
//實(shí)例2:對(duì)象運(yùn)算符instanceof,getName(),getSuperclass()方法:
//filename:Person.java
import java.io.*;
public class Person{
static int count=0;//定義靜態(tài)變量
protected String name;
protected int age;
public Person(String name,int age){
this.name=name;
this.age=age;
this.count++;
}
public String toString(){
return this.name+","+this.age;
}
public void display(){
System.out.println("本類(lèi)名="+this.getClass().getName()+";");
System.out.println("父類(lèi)名="+this.getClass().getSuperclass().getName()+";");
System.out.println("Person.count="+this.count+" ");
System.out.println("Student.count="+Student.count+" ");
Object obj=this;
if(obj instanceof Student)
System.out.println(obj.toString()+"是Student類(lèi)對(duì)象");
if(obj instanceof Person)
System.out.println(obj.toString()+"是Person類(lèi)對(duì)象");
}
public static void main(String[] args){
Person per=new Person("張三",18);
per.display();
Student stu=new Student("李四",19,"計(jì)算機(jī)");
stu.display();
}
}
class Student extends Person{
static int count=0;//隱藏父類(lèi)的count
protected String dept;
protected Student(String n1,int a1,String d1){
super(n1,a1);
dept=d1;
this.count++;
}
public String toString(){
return super.toString()+","+dept;
}
public void display(){
super.display();
System.out.println("super.count="+super.count+" ");//引用父類(lèi)的變量
System.out.println("this.count="+this.count+" ");
}
}
/**
本類(lèi)名=Person;
父類(lèi)名=java.lang.Object;
Person.count=1
Student.count=0
張三,18是Person類(lèi)對(duì)象
本類(lèi)名=Student;
父類(lèi)名=Person;
Person.count=2
Student.count=1
李四,19,計(jì)算機(jī)是Student類(lèi)對(duì)象
李四,19,計(jì)算機(jī)是Person類(lèi)對(duì)象
super.count=2
this.count=1
*/
到此這篇關(guān)于Java深入講解Object類(lèi)常用方法的使用的文章就介紹到這了,更多相關(guān)Java Object類(lèi)方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java構(gòu)建OAuth2授權(quán)服務(wù)器
本文主要介紹了java構(gòu)建OAuth2授權(quán)服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
淺談java中OO的概念和設(shè)計(jì)原則(必看)
下面小編就為大家?guī)?lái)一篇淺談java中OO的概念和設(shè)計(jì)原則(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
ThreadPoolExecutor線(xiàn)程池原理及其execute方法(詳解)
下面小編就為大家?guī)?lái)一篇ThreadPoolExecutor線(xiàn)程池原理及其execute方法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
SpringBoot 開(kāi)發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI
這篇文章主要介紹了SpringBoot 開(kāi)發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Spring Cloud構(gòu)建Eureka應(yīng)用的方法
這篇文章主要介紹了Spring Cloud構(gòu)建Eureka應(yīng)用的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
詳解SpringBoot如何刪除引用jar包中的無(wú)用bean
為了趕速度和直接將之前多模塊的maven項(xiàng)目中的部分模塊,直接以jar包的形式引入到新項(xiàng)目中了,雖然省去了不少開(kāi)發(fā)時(shí)間,導(dǎo)致項(xiàng)目臃腫,啟動(dòng)很慢。本文將用@ComponentScan注解去實(shí)現(xiàn)讓項(xiàng)目只加載自己需要的bean,需要的可以參考一下2022-06-06
實(shí)現(xiàn)一個(gè)簡(jiǎn)單Dubbo完整過(guò)程詳解
這篇文章主要為大家介紹了實(shí)現(xiàn)一個(gè)簡(jiǎn)單Dubbo完整過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Java如何使用SSLContext請(qǐng)求https鏈接
這篇文章主要介紹了Java如何使用SSLContext請(qǐng)求https鏈接問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

