// 1.toString 返回对象的字符串表示形式Object obj=new Object();String str1=obj.toString();System.out.println(str1);//java.lang.Object@b4c966a// 核心逻辑:
// 当我们打印一个对象的时候,底层会调用对象的toString方法,把对象变成字符串
// 然后再打印在控制台上,打印完毕换行处理System.out.println(obj);//java.lang.Object@b4c966a
// toStrin方法的结论:
// 如果我们打印一个对象,想要看到属性值的话,那么就重写toString方法就可以了
// 在重写过程中,把对象的属性值进行比较
// public boolean equals(Object obj) 比较两个对象是否相等String s1=new String();String s2=new String();boolean result1=s1.equals(s2);System.out.println(result1);//true// 结论:
// 1.如果没有重写equals方法,那么默认使用Object中的方法进行比较,比较的是地址值是否相等
// 2.一般来讲地址值对我们意义不大,所以我们会重写,重写之后比较的就是对象内部的属性值了
String s="abc";StringBuffer sb=new StringBuffer("abc");System.out.println(s.equals(sb));//false
// 因为equals方法是被s调用的,而s是字符串
// 所以equals要看String类中的
// 字符串中的equals方法,先判断参数是否为字符串
// 如果是字符串,再比较内部的属性
// 但是如果参数不是字符串,直接返回falseSystem.out.println(sb.equals(s));//false
// 因为equals方法是被sb调用的,而sb是stringBuilder
// 所以这里的equals方法要看stringBuilder中的equals方法
// 那么在stringBuilder当中,没有重写equals方法
// 使用的是object中的
// 在Object当中默认是使用==号比较两个对象的地址值
// 面这里的s和sb记录的地址值是不一样的,所以结果返回false
对象克隆:
把a对象的属性值完全拷贝给b对象,也叫做对象拷贝,对象复制