Java 打印一个对象却输出地址?

有时候使用System.out.println()方法输出一个类的对象,得到的结果却是该对象的地址:类名@12aa35151
这个结果是怎么来的呢?
System.out的println()方法只能在控制台输出字符串,有时候比如自己写的person类实例是内存中的一个对象,怎么直接转换为字符串输出呢?可能会想到toString()方法,但其实效果是一样的,也就是说下面的代码效果相同。

System.out.println(p);//p是一个person类对象
System.out.println(p.toString());

toString()方法是Object类的一个实例方法,toString()方法是一个非常特殊的“自我描述”方法,该方法通常用于实现:当程序员直接打印该对象时,系统将会输出该对象的“自我描述信息“,用以告诉外界该对象具有的状态信息。
Object类提供的toString()方法总是返回该对象实现类的”类名+@+hashCode“值,这个返回值并不能真正实现”自我描述“的功能,因此如果需要实现”自我描述“,就必须重写toString()方法。
例如:

class Apple{
	private Strng color;
	private double weight;
	……
	//重写toString方法用于实现Apple对象的”自我描述“
	public String toString(){
	return  "一个苹果的颜色是:"+color;
	}
public class TostringTest{
	public static void main (String[] args){
	Apple a =new Apple();
	System.out.println(a);
	}
}
}

你可能感兴趣的:(Java学习,java)