之前在学习的时候,忽然想到一个有趣的问题,Java类的实例直接输出之后,控制台会显示什么出来呢?
Java类的所有属性?
类的名字?
还是有别的我们所不了解的东西?
下面看测试。
package ex2;
import ex.User;
public class OutputClass {
public static void main(String[] args) {
User user = new User();
user.setName("zfh");
user.setPwd("123456");
System.out.println(user);
System.out.println(user.getClass());
System.out.println(user.toString());
System.out.println("object2:...");
User user2 = new User();
user2.setName("zfh");
user2.setPwd("123456");
System.out.println(user2);
System.out.println(user2.getClass());
System.out.println(user2.toString());
}
}
上面是测试类,下面是User类
package ex;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
/**
* @author zjn
*/
private static final long serialVersionUID = 1L;
private String name; // name
private String pwd; // pwd
//全部实现了set和get方法�? 以此完成依赖注入(设值注入)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
然后run,看下输出。
ex.User@15db9742
class ex.User
ex.User@15db9742
object2:...
ex.User@6d06d69c
class ex.User
ex.User@6d06d69c
这是什么东西?
百度了一下。
发现直接输出Java类的实例,会自动调用getClass().getName() + '@' + Integer.toHexString(hashCode()),也就是每个Java类自带的toString()方法的具体内容。
@后面的表示十六进制的哈希值。