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@27f674d
Student 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