Objct
toString()
package myObjct;public class myObjct {public static void main(String[] args) {Object o=new Object();System.out.println(o.toString());//打印结果java.lang.Object@27f674d}
}
java.lang.Object@27f674d后面的@27f674d是地址值
package myObjct;import java.util.Scanner;public class myObjct {public static void main(String[] args) {Object o=new Object();System.out.println(o.toString());//打印结果java.lang.Object@27f674dStudent student=new Student();String str =student.toString();System.out.println(str);//myObjct.Student@48140564//学生类没有继承 但是Object也是所有类的父类//System类名//out 静态变量//System.out 获取打印对象//println();方法//参数:表示打印内容//逻辑//当我们打印一个对象是 底层会调用tostring方法 把对象变成字符串 然后再打印在控制台//默认情况下 object类中 tostring方法返回地址值//打印一个对象打印就是地址值//但是地址值对我们没什么意义//我想看到对象内部属性值 怎么办//重写父类Object类中的tostring方法}
}
结论 我们打印一个对象 想看到属性值就重写toString方法就可以了,再重写的方法中,把对象属性值进行拼接 如下
equals
package myObjct;public class myEquals {public static void main(String[] args) {//比较两个对象用的Student s1=new Student(12,"打");Student s2=new Student(13,"打");boolean result=s1.equals(s2);System.out.println(result);//打印结果为false//如果没有重写 equals方法 默认使用object种方法比较 因为他比较的是两个对象的地址值//让他比较两个对象属性需要重写equals方法}
}
练一练
package myObjct;public class test {public static void main(String[] args) {String s="abc";StringBuilder sb=new StringBuilder("abc");System.out.println(s.equals(sb));//false
equals方法是被s调用
所以要看String里的equals方法
字符串里的equals方法 要看传进来的是不是字符串 这里传了StringBuilder不是字符串 所以为false
System.out.println(sb.equals(s));//false
这里的equals被StringBuilder调用的
但是StringBuilder中没有equals方法
使用的是object中的 但是object中比较的是地址值 所以false