黑马程序员技术交流社区

标题: 关于新特性的一静态导入的小细节,有问题 [打印本页]

作者: 瞿乐    时间: 2012-8-6 22:05
标题: 关于新特性的一静态导入的小细节,有问题
看到这么一个题,下面两个程序有什么区别?
import java.io.PrintStream;
public class Demo1 {
public static void main(String[] args) {
    PrintStream out = System.out;
    out.print(10);
    out.println(20);
}
}

import static java.lang.System.out;
public class Demo0 {
public static void main(String[] args) {
     out.print(10);
     out.println(20);
}
}
看着这个题目,我忽然想问一下,从来没有像过的一个问题System.out的out是什么???
我看到百度里面第一个满意答案说是 System类的一个静态方法,我记 得所有的方法都好像有括号吧,
它没有括号啊。还有,静态导入是不是都是得导入静态的方法,和静态的类。 而普通的是不是就只可以普通的类, 好像也可以静态类吧,也就是这两个程序的区别了。我想了思路,不过不清楚这区别究竟是什么了
作者: 王渠    时间: 2012-8-6 22:38
它不是方法,他是一个对象,代表的是PrintStream的对象。不过该对象是静态的。
因为是对象,所以就可以调用该类下面的方法了。
所以,用的最多的输出语句
System.out.println();
分解出来就是用System类名,调用了一个静态成员变量,该变量是一个对象PrintStream。
然后再用对象调用的方法。
作者: 李炜    时间: 2012-8-6 23:06
像这种问题就应该自己去查文档了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2