黑马程序员技术交流社区
标题:
system.out.println()?
[打印本页]
作者:
章成
时间:
2011-7-16 10:20
标题:
system.out.println()?
自己在书上看system的常量:public static final PrintStream out,这里out既然是常量,类名.常量,这是调用常量,怎么system.out.pritln(),println()明显是方法,常量out怎么能调用方法?
调用方法,一是类名调用,或对象调用,这里system.out调用println()是怎么回事?
作者:
匿名
时间:
2011-7-16 10:28
应该是类里面包含下一个的方法吧: system 类里面有out类(应该是一个类吧,不是常量),out类的里面有println方法吧!
作者:
匿名
时间:
2011-7-16 10:30
out其声明如下public static final PrintStream out
“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
其实就是一个负责输出的类。
单纯的说“out”其实是System类里声明的一个PrintStream类的对象的引用变量
out是PrintStream的实现类。
System.out得到的是到控制台的输出流。
作者:
匿名
时间:
2011-7-16 17:31
查看JDK帮助文档就行了啊
public static final PrintStream out文档是这样定义的,out常量返回的是一个打印流!
这样System.out不就是PrintStream类的一个实例的吗,这样不就可以调用自己的方法。
作者:
匿名
时间:
2011-7-16 18:12
标题:
System.out.println()中"out"的理解
查看JDK文档中,确实是out是常量(public static final PrintStream out),但文档中又说,out是在 System 类提供的标准输出流。该流已打开并准备接受输出数据。通常,该流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。看到这里也确实范晕了。既然是常量,怎么可以重定向呢?
接着,有百度了一下,楼主的这个问题百度里面有人问过,有人是这么答的:out是system类的一个静态成员变量,类相当于JAVA里面的一个类型,不要以为变量只有整型,字符串,浮点型这些,类也算是一种类型,所以这里的out其实是一个PrintStream类型,看API就明白.而这个类里面就提供了println这个方法。
这么看,也有人认为这个语句里面的out是变量,但是明明用final修饰的,于是又再重新学习了fianl的知识,看是否有知识点的遗漏。
果然发现final有这么一点知识:final定义的变量,其不可改变的意思是对基本类型来说其值不可改变,而对于对象变量来说其引用不可再变。PrintStream是其引用的一个类对象,只要保持这个类对象不变,调用PrintStream中的方法就是合理的了。
综上,System.out.println()中"out"应该理解为PrintStream类对象常量,这样,调用它中的println方法也就是合理的了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2