package day7.demo1;
import java.util.Objects;
/*p218-p219
*/
public class Demo1Objects_Object {
public static void main(String[] args) {
//========Object中得equals 和Objects.equals得区别============
String st=null;
String st1="abc";
// System.out.println(st.equals(st1));//NullPointerException
/*a == b比较得是地址
* public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
*
* */
System.out.println(Objects.equals(st,st1));//false
//=================Object中得ToString()=====================
/*
* 作用:打印对象信息
*重写前:打印得是报名@地址值
* 重写后:打印属性值
* */
String sl="abc";
System.out.println("字符串对象是对Object.ToString方法重写了,直接输出对象得名字等于直接输出对象.ToString()方法"+sl);//字符串对象是对Object.ToString方法重写了,直接输出对象得名字等于直接输出对象.ToString()方法abc
System.out.println("字符串对象是对Object.ToString方法重写了,直接输出对象得名字等于直接输出对象.ToString()方法"+sl.toString());//字符串对象是对Object.ToString方法重写了,直接输出对象得名字等于直接输出对象.ToString()方法abc
int [] shuzu=new int[]{10,20,30};
System.out.println("数组没有对Object.ToString重写,直接输出对象得名字等于直接输出对象.ToString()方法"+shuzu);//数组没有对Object.ToString重写,直接输出对象得名字等于直接输出对象.ToString()方法[I@1540e19d
System.out.println("数组没有对Object.ToString重写,直接输出对象得名字等于直接输出对象.ToString()方法"+shuzu.toString());//数组没有对Object.ToString重写,直接输出对象得名字等于直接输出对象.ToString()方法[I@1540e19d
//=================Object中得equals方法=====================
/*
* 作用:比较两个对象
*重写前:比较两个对象得地址值
* 重写后:比较两个对象得属性值
* */
String sl1="abc";
String sl2="abc";
System.out.println("字符串得equals方法对 Object中得equals方法进行了重写,所以直接比较得是内容,内容相等则为true "+sl1.equals(sl2));//字符串得equals方法对 Object中得equals方法进行了重写,所以直接比较得是内容,内容相等则为true true
Stundent stu1=new Stundent("张翰",90);
Stundent stu2=new Stundent("张翰",90);
System.out.println(" Stundent类重写了Object中得equals方法,所以比较属性相等则为true,如果没有重写,那么两个均为new得地址值不相等,所以为false "+stu1.equals(stu2));//Stundent类重写了Object中得equals方法,所以比较属性相等则为true,如果没有重写,那么两个均为new得地址值不相等,所以为falsetrue
}
}