问题描述
- 求大神帮帮忙,搞不懂了
- package test;
public class Person {
int name;
int age;Person(int n int i) { name = n; age = i;}public static void main(String[] args) { Person tom = new Person(1 25); Person john = new Person(2 27); System.out.println(tom); System.out.println(john);}
}
输出值test.Person@15db9742
test.Person@6d06d69c
不应该是125.
解决方案
println会去调用String.valueOf(Person),
String.valueOf的源码
public static String valueOf(Object obj) { return (obj == null) ? ""null"" : obj.toString();}
Person的toString是Object中的toString
源码如下
public String toString() { return getClass().getName() + ""@"" + Integer.toHexString(hashCode());}
所以最终是test.Person@15db9742
想要你自己的结果,Person中重载toString方法,按照你想要的格式return输出就行了。
解决方案二:
除非你重载toString,否则输出的是类名+Hash
解决方案三:
package test;
public class Person {
int name;
int age;
Person(int n int i) {
name = n;
age = i;
}
public static void main(String[] args) {
Person tom = new Person(1 25);
Person john = new Person(2 27);
System.out.println(tom.name +"" "" + tom.age);
System.out.println(john.name +"" "" + john.age);
}
}
解决方案四:
要重载toSting()函数,然后按照下面的方式打印
Person(int n int i) { name = n; age = i; public String toString() { return this.name + "" + this.age; } System.out.println(tom.toString()); System.out.println(john.toSting());}
时间: 2024-08-01 12:15:23