欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java深入講解Object類常用方法的使用

 更新時間:2022年04月28日 09:57:42   作者:orangemilk_  
前面java繼承中說到的Object類是java中一個特殊的類,所有的類都是直接或者間接的繼承自O(shè)bject類,即如果某個類沒有使用extends關(guān)鍵字則默認是java.lang.Object類的子類,所以所有的類都可以使用Object類中定義的方法,下面介紹Object類的常用方法

java繼承

1.Object類的常用方法

方法功能
public Boolean equals(Object obj)判斷兩個對象變量所指向的是否為同一個對象
public String toString()將調(diào)用該方法的對象轉(zhuǎn)換為字符串返回
public final Class getClass返回運行該方法的對象所屬的類

--------------??分割線??--------------

2.equals()方法

  • 與比較運算符"=="相同,equals()運算符可以比較兩個對象是否相等,equals()方法定義在Object類中,由于Object類是所有類的父類,所以在任何類都可以使用。
  • 在字符串類中也包含了一個equals()方法,對于字符串變量來說,使用"=="運算符和使用equals()方法是不同的,前者是用來比較兩個變量本身的值,即對象在內(nèi)存中的首地址,而equal()方法則是比較兩個字符串包含的內(nèi)容是否相等。

關(guān)于字符串的操作,Java在程序運行時會維護一個字符串池,對于一些可共享的字符串對象,會先在字符串池中判斷是否有相同的String內(nèi)容,如果有就直接返回,不用創(chuàng)建新的String對象,節(jié)省了內(nèi)存空間,當在程序中直接使用“"”括起來的字符串時,該字符串就放在字符串池里。

實例1:使用類和字符串兩種對象比較運算符"=="和equals()方法的不同(代碼在文末)

對于非字符串類型的變量來說,兩種方法都是比較所指的對象在堆內(nèi)存中的首地址。即兩個類類型的變量是否指向同一個對象。

3.toString方法

該方法的功能是將調(diào)用該方法的對象的內(nèi)容轉(zhuǎn)換成字符串,并返回。由于返回值是沒有意義的字符串,所以可以根據(jù)需要重新定義該方法覆蓋父類中的同名方法。

4.getClass方法

該方法的功能是返回運行時的對象所屬的類。

Class 對象由JVM自動產(chǎn)生,每一個類在被加載的時候都會自動為其生成一個Class類對象,Class類沒有構(gòu)造方法??梢酝ㄟ^Object類的getClass()方法來取得對象對應(yīng)的Class對象,再通過Class對象的一些方法獲取類的基本信息。

Class類中的getName()方法:

通過getClass()方法返回class類型,根據(jù)繼承的“即是”原則,所有類的對象即是Object類的對象,當前對象this調(diào)用Object的getClass()方法,得到當前對象所在的Class類,再調(diào)用Class中的getName()方法得到this的類名字符串。同樣使用getSuperclass()方法獲取父類。

實例2:getClass()方法的使用:(代碼在文末)

5.對象運算符instanceof

對象運算符instanceof用來測試一個指定對象是否是指定類或它的子類的實例。

作用:用于強制類型轉(zhuǎn)換之前檢查對象的真實類型以避免類型轉(zhuǎn)換異常,提高了代碼的健壯性。

該方法的返回值是boolean類型。

實例Java代碼

實例1:

//實例1:使用類和字符串兩種對象比較運算符"=="和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
*/

實例2:

//實例2:對象運算符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("本類名="+this.getClass().getName()+";");
        System.out.println("父類名="+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類對象");
        if(obj instanceof Person)
            System.out.println(obj.toString()+"是Person類對象");
    }
     public static void main(String[] args){
        Person per=new Person("張三",18);
        per.display();
        Student stu=new Student("李四",19,"計算機");
        stu.display();
    }

}
class Student extends Person{
    static int count=0;//隱藏父類的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+" ");//引用父類的變量
        System.out.println("this.count="+this.count+" ");
    }
   
}
/**
本類名=Person;
父類名=java.lang.Object;
Person.count=1
Student.count=0
張三,18是Person類對象
本類名=Student;
父類名=Person;
Person.count=2
Student.count=1
李四,19,計算機是Student類對象
李四,19,計算機是Person類對象
super.count=2
this.count=1
*/

到此這篇關(guān)于Java深入講解Object類常用方法的使用的文章就介紹到這了,更多相關(guān)Java Object類方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java構(gòu)建OAuth2授權(quán)服務(wù)器

    java構(gòu)建OAuth2授權(quán)服務(wù)器

    本文主要介紹了java構(gòu)建OAuth2授權(quán)服務(wù)器,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • 淺談java中OO的概念和設(shè)計原則(必看)

    淺談java中OO的概念和設(shè)計原則(必看)

    下面小編就為大家?guī)硪黄獪\談java中OO的概念和設(shè)計原則(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • ThreadPoolExecutor線程池原理及其execute方法(詳解)

    ThreadPoolExecutor線程池原理及其execute方法(詳解)

    下面小編就為大家?guī)硪黄猅hreadPoolExecutor線程池原理及其execute方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • SpringBoot 開發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI

    SpringBoot 開發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI

    這篇文章主要介紹了SpringBoot 開發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • java中如何判斷對象是否是垃圾

    java中如何判斷對象是否是垃圾

    這篇文章主要介紹了java中如何判斷對象是否是垃圾,Java有兩種算法判斷對象是否是垃圾:引用計數(shù)算法和可達性分析算法,需要的朋友可以參考下
    2023-04-04
  • IDEA中配置Java反編譯工具javap -c的使用

    IDEA中配置Java反編譯工具javap -c的使用

    本文主要介紹了IDEA中配置Java反編譯工具javap -c的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Spring Cloud構(gòu)建Eureka應(yīng)用的方法

    Spring Cloud構(gòu)建Eureka應(yīng)用的方法

    這篇文章主要介紹了Spring Cloud構(gòu)建Eureka應(yīng)用的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 詳解SpringBoot如何刪除引用jar包中的無用bean

    詳解SpringBoot如何刪除引用jar包中的無用bean

    為了趕速度和直接將之前多模塊的maven項目中的部分模塊,直接以jar包的形式引入到新項目中了,雖然省去了不少開發(fā)時間,導(dǎo)致項目臃腫,啟動很慢。本文將用@ComponentScan注解去實現(xiàn)讓項目只加載自己需要的bean,需要的可以參考一下
    2022-06-06
  • 實現(xiàn)一個簡單Dubbo完整過程詳解

    實現(xiàn)一個簡單Dubbo完整過程詳解

    這篇文章主要為大家介紹了實現(xiàn)一個簡單Dubbo完整過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Java如何使用SSLContext請求https鏈接

    Java如何使用SSLContext請求https鏈接

    這篇文章主要介紹了Java如何使用SSLContext請求https鏈接問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論