在Java编程中,我们常常用System.out.println()方法来输出,
在集合中我经常看到使用方法引用的方式来遍历集合元素:xxx.foreach(System.out::println);也许我们都已经猜到println()是方法名,System是类名,但out又是什么呢?
通过查阅api文档,我们可以发现,out是System类的一个field,我们经常翻译成“域”、”属性”、“字段”。简单的说就是System类的成员变量,既然已经知道System的静态成员变量,但这个成员不属于基本类型,而是java.io.PrintStream类。public static final PrintStream out = new PrintStream();
所以这个out就可以理解为System类的静态成员变量引用了PrintStream类的对象。
而print是PrintStream类中的实例方法,又根据类.静态成员变量的规定,即表达成System.out.print();
看下面三段代码:(转)
测试主程序:
对比于System类:
对比于PrintStream类:
测试主程序:
package com.jiuzhai.blue.test; public class HttpTest { public HttpTest() { System.out.println("This is class HttpTest"); } /** * @param args */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub SubMain.st.test(); } }
对比于System类:
package com.jiuzhai.blue.test; public class SubMain { public static SubTest st = new SubTest(); public SubMain() { System.out.println("This is class Submain"); } }
对比于PrintStream类:
package com.jiuzhai.blue.test; public class SubTest { public SubTest() { System.out.println("This is class SubTest"); } public void test() { System.out.println("This is a test"); } }
运行输出为:This is class SubTest This is a test