Object

toString

原本作用

  • 返回对象的字符串表示形式
  • 包名类名+@+对象地址值
System.out.println(obj);

也会打印这样的地址值
源码:

public void println(Object x) {  
    String s = String.valueOf(x);  
    if (getClass() == PrintStream.class) {  
        // need to apply String.valueOf again since first invocation  
        // might return null        writeln(String.valueOf(s));  
    } else {  
        synchronized (this) {  
            print(s);  
            newLine();  
        }  
    }  
}



public static String valueOf(Object obj) {  
    return (obj == null) ? "null" : obj.toString();  
}

如果不是null,就会toString

一般重写toString

  • 如果我们打印一个对象的属性值的话,那么重写toString()就行了,在重写方法时,把对象的属性拼接

equals

public static void main(String[] args) {  
    Student s1 = new Student();  
    Student s2 = new Student();  

    boolean equals = s1.equals(s2);  
    System.out.println(equals);  
}

//false

重写equals后运行结果为true

@Override  
public boolean equals(Object o) {  
    if (o == null || getClass() != o.getClass()) return false;  
    Student student = (Student) o;  
    return age == student.age && Objects.equals(name, student.name);  
}  

@Override  
public int hashCode() {  
    return Objects.hash(name, age);  
}
public static void main(String[] args) {  
    String s = "abc";  
    StringBuilder sb = new StringBuilder("abc");  
    System.out.println(s.equals(sb));  
    System.out.println(sb.equals(s));  

    //运行结果  
    //false false  
}

第一个中调用对象是String,先看是不是同一个对象,如果不是字符串,直接返回false
第二个中调用对象时StringBuilder,StringBuilder没有重写equals方法,Object中使用的是==比较两个对象的地址值

clone

重写对象的clone方法

方法会在底层帮我们创建一个对象,并把原对象的数据拷贝过去
细节:

  1. 重写Object中的clone方法
  2. 让Javabean类实现Cloneable
  3. 创建原对象并调用clone就可以了

Objects

equals

可以规避调用者为null的判断

Student s1=null;  
Student s2=new Student();  

boolean equals = Objects.equals(s1, s2);  
System.out.println(equals);

//false

isNull

判断对象是否为null,如果为null,返回true

Student s3 = null;  
Student s4 = new Student();  
System.out.println(Objects.isNull(s3));//true  
System.out.println(Objects.isNull(s4));//false

nonNull

System.out.println(Objects.nonNull(s3));//false  
System.out.println(Objects.nonNull(s4));//true
未经允许不得转载
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇