日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2021-11-11Object类

發布時間:2025/3/13 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021-11-11Object类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Object的toString方法

DemoObjectToString.java

package Object; //String toString() 返回該對象的字符串表示 //看一個類是否重寫了toString方法,直接打印這個類對應對象的名字即可 //如果沒有重寫toString方法,那么打印的就是對象的地址值(默認) //random沒有重寫,arraylist和scanner重寫了 public class DemoObjectToString {public static void main(String[] args) {Person p = new Person("xx",19);String s = p.toString();System.out.println(s);//Object.Person@1b6d3586//直接打印對象的名字,其實就是調用對象的toString方法 p = p.toStringSystem.out.println(p);//Object.Person@1b6d3586//Person{name='xx', age=19}//Person{name='xx', age=19}} }

Person.java

package Object;public class Person {private String name;int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}/** 直接打印對象的地址值沒有意義,需要重寫Object類的toString方法* 打印對象的屬性(name,age)* */@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", 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;} }

2.Object類的equals方法,重寫Object類的equals方法

DemoObjectEqual.java

package Object; /* * Person類默認繼承了Object類,所以可以使用Object類的equals方法 * boolean equals(Object obj)指示其他某個對象是否與此對象“相等” * public boolean equals(Object obj) {return (this == obj);} * 方法體: * ==:比較運算符,返回的就是一個布爾值true,false * 基本數據類型:比較的是值 * 引用數據類型:比較的是兩個對象的地址值 * this是誰?哪個對象調用的方法,方法中的this就是哪個對象,p1調用的equals方法 * */ public class DemoObjectEqual {public static void main(String[] args) {Person person1 = new Person("zz",18);Person person2 = new Person("zz",18);//person1 = person2;//true,不重寫時boolean equals = person1.equals(person2);System.out.println(equals);//true,不重寫時返回false} }

Person.java類中加入

/** Object 類的equals方法默認比較的是兩個對象的地址值,沒有意義(因為一旦new了,便是新的)* 所以我們需要重寫equals方法,比較兩個對象的屬性值(name,age)* 問題:* 隱含著一個多態* Object obj = person2 = new Person("xx",18);* 多態弊端:無法使用子類特有的內容(屬性,方法)* 解決:可以使用向下轉型(強轉)把Object類型轉換成Person* */@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age && Objects.equals(name, person.name);}

3.Objects類的equals方法

Demo03Equals.java

package Object;import java.util.Objects;public class Demo03Equals {public static void main(String[] args) {String s1 = null;String s2 = "abc";// boolean equals = s1.equals(s2);//NullPointerException null是不能調用方法的,會拋出空指針異常 // System.out.println(equals);/*Object類的equals方法:對兩個對象進行比較防止空指針異常* public static boolean equals(Object a, Object b) {return (a == b) || (a != null && a.equals(b));}* */boolean equals = Objects.equals(s1, s2);System.out.println(equals);//false} }

4.Object&Objects類總結

  • toString
  • Person.java

    package ObjectObjects;public class Person {private String name;private int age;public Person() {}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}public Person(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;} }

    Demo01ToString.java

    package ObjectObjects;import javax.rmi.CORBA.Stub;public class Demo01ToString {public static void main(String[] args) {String str = "abc";System.out.println(str);//abcPerson person = new Person("xx",19);//重寫ToString之前//System.out.println(person);//ObjectObjects.Person@1b6d3586//重寫ToString之后System.out.println(person);//Person{name='xx', age=19}} }
    • Object中的Equals

    Demo02ObjectEquals.java

    package ObjectObjects;public class Demo02ObjectEquals {public static void main(String[] args) {String str1 = "abc";String str2 = "abc";System.out.println(str1.equals(str2));//truePerson person1 = new Person("xx",18);Person person2 = new Person("xx",18);//System.out.println(person1.equals(person2));//重寫方法前:false//認為同姓名同年齡的就是同一個人System.out.println(person1.equals(person2));//重寫方法后:true} }
    • Objects中的Equals
      Demo03ObjectsEquals.java
    package ObjectObjects;import java.util.Objects;public class Demo03ObjectsEquals {public static void main(String[] args) {//String str1 = "abc";String str1 = null;//空指針異常String str2 = "abc";//System.out.println(str1.equals(str2));//trueboolean equals = Objects.equals(str1, str2);System.out.println(equals);//false} }

    總結

    以上是生活随笔為你收集整理的2021-11-11Object类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。