最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java  Object類中的常用API介紹

 更新時間:2022年11月29日 10:39:56   作者:藍桉cyq  
這篇文章主要介紹了Java  Object類中的常用API介紹,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Java常用API介紹

API概念

什么是API?

API(Application Programming interface) 應用程序編程接口。

簡單來說:就是Java幫我們已經寫好的一些方法**,我們直接拿過來用就可以了。**

Object類

Object類的作用:

  • Object類的方法是一切子類對象都可以直接使用的,所以我們要學習Object類的方法。
  • 一個類要么默認繼承了Object類,要么間接繼承了Object類,Object類是Java中的祖宗類。

toString方法

方法名說明
toString()默認是返回當前對象在堆內存中的地址信息: 類的全限名@內存地址

基本使用:

例如有一個Student類

public class Test {
    public static void main(String[] args) {
        Student stu = new Student();

        // 方式一: 將返回的地址在變量中接收
        String str = stu.toString();
        System.out.println(str);

        // 方式二: 輸出時, 直接調用toString方法
        System.out.println(stu.toString());

        // 方式三: 直接輸出對象變量, 默認可以省略toString方法
        System.out.println(stu);
    }
}

問題引出:

在開發(fā)中直接輸出對象變量,默認輸出對象的地址其實是毫無意義的。

事實上, 開發(fā)中更多的時候是希望看到對象的內容數據而不是對象的地址信息。

toString存在的意義:

父類toString()方法存在的意義是為了被子類重寫,以便返回對象的內容信息,而不是地址信息??!

演示代碼:

例如我們有如下一個Student類

package com.chenyq.d12_api_object;

/**
    默認繼承自Object
 */
public class Student {
    private String name;
    private int age;
    private double height;

    public Student() {
    }

    public Student(String name, int age, double height) {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    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 getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }
}

我們可以在該Student類中重寫toString方法

package com.chenyq.d12_api_object;

/**
    默認繼承自Object
 */
public class Student {
    private String name;
    private int age;
    private double height;

    public Student() {
    }

    public Student(String name, int age, double height) {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    // 重新toString方法
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", height=" + height +
                '}';
    }

    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 getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }
}

此時再調用Student對象變量的toString方法, 會調用我們自己重寫的toString, 返回對象的內容

public class Test {
    public static void main(String[] args) {
        Student stu = new Student("chenyq", 18, 1.88);
        System.out.println(stu); // Student{name='chenyq, age=18, height=1.88}
    }
}

小結:

Object的toString方法的作用是什么?

  • 讓子類重寫toString方法,以便返回子類對象中的內容。

equals方法

方法名說明
equals(Object o)默認是比較當前對象與另一個對象的地址是否相同,相同返回true,不同返回false

基本使用:

我們還是繼續(xù)使用上面的Student類演示

public class Test2 {
    public static void main(String[] args) {
        Student stu1 = new Student("chenyq", 18, 1.88);
        Student stu2 = new Student("chenyq", 18, 1.88);

        // 這里equals調用的是Object中的
        System.out.println(stu1.equals(stu2)); // false
    }
}

問題思考:

直接比較兩個對象的地址是否相同完全可以用 “==”, 那么為什么要使用equals呢?

equals存在的意義

在開發(fā)中, 其實我們并不會使用equals方法比較兩個對象的地址, 通常是用來比較兩個對象內容是否相同

而父類equals方法存在的意義就是為了被子類重寫,以便子類自己來定制比較規(guī)則。

演示代碼:

重寫equals方法, 自己定制比較規(guī)則: 例如比較兩個對象內容是否相同

package com.chenyq.d12_api_object;

import java.util.Objects;

/**
    默認繼承自Object
 */
public class Student {
    private String name;
    private int age;
    private double height;

    public Student() {
    }

    public Student(String name, int age, double height) {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    /**
     重寫equals方法
     s1 -> this
     s2 -> o
     */
    @Override
    public boolean equals(Object o) {
        // 1. 判斷this和o是否是同一個對象
        if (this == o) return true;
        // 2. 判斷o是否為null以及this和o類型是否相同
        if (o == null || getClass() != o.getClass()) return false;
        // 3. 將o強轉為Student類型
        Student student = (Student) o;
        // 4. 返回age, height, name的比較結果
        return age == student.age && Double.compare(student.height, height) == 0 && Objects.equals(name, student.name);

    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 getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }
}

此時再調用Student對象的equals方法, 就是調用的自己重寫的equals

public class Test2 {
    public static void main(String[] args) {
        Student stu1 = new Student("chenyq", 18, 1.88);
        Student stu2 = new Student("chenyq", 18, 1.88);

        // 這里equals調用的是自己重寫的, 比較對象內容是否相同
        System.out.println(stu1.equals(stu2)); // true
    }
}

到此這篇關于Java Object類中的常用API的文章就介紹到這了,更多相關Java Object類常用API內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 利用MyBatis-Plus靈活處理JSON字段的技巧與最佳實踐

    利用MyBatis-Plus靈活處理JSON字段的技巧與最佳實踐

    這篇文章主要給大家介紹了關于利用MyBatis-Plus靈活處理JSON字段的技巧與最佳實踐,Mybatis-Plus可以很方便地處理JSON字段,在實體類中可以使用@JSONField注解來標記JSON字段,需要的朋友可以參考下
    2024-07-07
  • springboot Jpa多數據源(不同庫)配置過程

    springboot Jpa多數據源(不同庫)配置過程

    這篇文章主要介紹了springboot Jpa多數據源(不同庫)配置過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • idea每次新打開的項目窗口maven都要重新設置問題

    idea每次新打開的項目窗口maven都要重新設置問題

    這篇文章主要介紹了idea每次新打開的項目窗口maven都要重新設置問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解java為什么不允許類多重繼承卻允許接口多重繼承

    詳解java為什么不允許類多重繼承卻允許接口多重繼承

    這篇文章主要介紹了java為什么不允許類多重繼承卻允許接口多重繼承,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 僅用5分鐘極速入門Dubbo使用教程

    僅用5分鐘極速入門Dubbo使用教程

    今天給大家介紹一款高性能、透明的遠程過程調用框架dubbo,通過本文學習可以快速掌握Dubbo知識,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • 了解java架構之微服務架構—雪崩效應

    了解java架構之微服務架構—雪崩效應

    這篇文章主要介紹了了解java架構之微服務架構—雪崩效應,微服務化產品線,每一個服務專心于自己的業(yè)務邏輯,并對外提供相應的接口,看上去似乎很明了,其實還有很多的東西需要考慮,,需要的朋友可以參考下
    2019-06-06
  • SpringBoot調用WebService接口方法示例代碼

    SpringBoot調用WebService接口方法示例代碼

    這篇文章主要介紹了使用SpringWebServices調用SOAP?WebService接口的步驟,包括導入依賴、創(chuàng)建請求類和響應類、生成ObjectFactory類、配置WebServiceTemplate、調用WebService接口以及測試代碼,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • springboot在idea下debug調試熱部署問題

    springboot在idea下debug調試熱部署問題

    這篇文章主要介紹了springboot在idea下debug調試熱部署問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java基礎入門之switch怎么使用枚舉

    Java基礎入門之switch怎么使用枚舉

    在Java開發(fā)中,switch語句是一種常用的流控制語句,而當使用枚舉類型作為條件時,我們常常會遇到報錯問題,那么該如何解決呢,下面就來詳細講講
    2023-06-06
  • JAVA SpringBoot統一日志處理原理詳解

    JAVA SpringBoot統一日志處理原理詳解

    這篇文章主要介紹了SpringBoot的統一日志處理原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-09-09

最新評論

江西省| 侯马市| 汝阳县| 永修县| 莒南县| 上饶县| 永修县| 鄂托克前旗| 宁波市| 南雄市| 庆元县| 安庆市| 皮山县| 临西县| 罗田县| 武川县| 昭通市| 栖霞市| 旬阳县| 大足县| 玉山县| 邵武市| 汉中市| 桓台县| 永福县| 涞水县| 滦平县| 尖扎县| 阜阳市| 万盛区| 中卫市| 赤壁市| 吉安市| 保山市| 阜平县| 曲水县| 盐源县| 莱芜市| 长岛县| 余庆县| 许昌县|