关于System.out.println

 发布日期:2008-11-28  

学习java已经有一段时间了,这段时间里感觉到了java的博大精深,同时也是产生了不少的疑惑。 


学习java的时候产生的第一个疑惑是关于System.out.println()的,自己不知道这个方法究竟可以输出什么类型的数据。我试过每一种基本数据类型,发现都可以输出。后来有一次在学习数组的时候老师介绍了一种逐个打印出数组元素的方法,是采用了循环的方法;当时心里就想:为什么不直接用System.out.println()打印出来呢?课后自己试了一下: 


int[] bb = {1,2,3,4,5}; 

System.out.println (bb); 

在一个main方法中实现这两条语句后得到的结果是: 

[I@1fb8ee3 

心里很不明白为什么是这个结果,当时也看不懂这个结果,以为这是个乱码。 

后来我看了API的帮助文档中关于System类的介绍,其中有: 

System 

static PrintStream out 

“标准”输出流。 


以下是关于System.out的详细介绍: 

out 

public static final PrintStream out“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。 


对于简单独立的 Java 应用程序,编写一行输出数据的典型方式是: 

System.out.println(data) 

请参阅 PrintStream 类中的 println 方法。 


于是又找到文档中关于PrintStream 的介绍,其中有这么一句 

void println(Object x) 

打印 Object,然后终止该行。 


详细介绍是: 

println 

public void println(Object x)打印 Object,然后终止该行。此方法的行为就像先调用 print(Object) 然后调用 println() 一样。 

参数: 

x - 要打印的 Object。 

看来System.out.println()是可以直接打印对象类型的,但是自己在打印int[] bb时得到的却不是数组的元素呢........ 

记得老师还说过一个toString()方法,可以返回对象的字符串表示形式,在Object类的介绍中又看到这样一条: 

toString 

public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。 

Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于: 

getClass().getName() + '@' + Integer.toHexString(hashCode()) 

返回: 

该对象的字符串表示形式。 

难道将一个对象作为System.out.println()的参数时输出 

的结果就是跟这个方法有关? 

另外在类 PrintStream中还看到这样一个方法: 

void println(char[] x) 

打印字符数组,然后终止该行。 


System.out.println()可以直接打印字符数组? 

char[] charArray={'a','b','c','d','e'}; 

System.out.println (charArray); 

试了一下果然可以直接输出!


class  printArray
{
	public static void main(String[] args) 
	{
		int[] bb = {1,2,3,4,5}; 
		System.out.println(bb); //[I@15093f1
		char[] charArray={'a','b','c','d','e'}; 
		System.out.println (charArray); //abcde

		System.out.println("Hello World!");
	}
}