Java toString解析

Java toString解析

我们知道,Java所有的类都是Object类的派生类,toString就是Object类中的一个方法。

我们看看它的源代码。

public String toString()
{
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

可以看见,toString方法返回的是一个字符串。该字符串由 类名+ "@" + 此对象的哈希码(无符号16进制)

当我们没有重写Object类中的toString方法时,在调用System.out.println()直接传入对象名的时候,会自动调用对象的toString方法,打印出上述的内容。

如:

class Man{
	public Man() {
		
	}
}


public class Test {
	public static void main(String[] args) {
        
		  Man Terry = new Man();
		  System.out.println(Terry);
        
	}
}

// 结果
// Man@8efb846

既然我们知道在方法或定义,强制类型为String时,直接使用对象名会隐性调用toString方法,那么我们自然可以重写toString方法实现自己的目的。

import java.util.*;

class Man{
	static int code = 0;
	private int number = -1;
	public Man() {
		code++;
		number = code;
	}
	
	@Override
	public String toString() {
		return "I am No." + number;
	}
}


public class Test {
	public static void main(String[] args) {
		  Man Terry = new Man();
		  Man Tom = new Man();
		  Man Mary = new Man();
		  System.out.println(Terry);
		  System.out.println(Tom);
		  System.out.println(Mary);
	}
}

// 结果
/*
   I am No.1
   I am No.2
   I am No.3
*/
posted @ 2020-03-20 17:01  scyq  阅读(728)  评论(0编辑  收藏  举报