A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 章成 黑马帝   /  2011-7-16 10:20  /  3329 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

自己在书上看system的常量:public static final PrintStream out,这里out既然是常量,类名.常量,这是调用常量,怎么system.out.pritln(),println()明显是方法,常量out怎么能调用方法?
调用方法,一是类名调用,或对象调用,这里system.out调用println()是怎么回事?

评分

参与人数 1技术分 +1 收起 理由
admin + 1 问题挺好,不过。。省略23字!!

查看全部评分

5 个回复

倒序浏览
黑马网友  发表于 2011-7-16 10:28:11
沙发
应该是类里面包含下一个的方法吧: system 类里面有out类(应该是一个类吧,不是常量),out类的里面有println方法吧!
回复 使用道具 举报
黑马网友  发表于 2011-7-16 10:30:47
藤椅
out其声明如下public static final PrintStream out
“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
其实就是一个负责输出的类。

单纯的说“out”其实是System类里声明的一个PrintStream类的对象的引用变量

out是PrintStream的实现类。
System.out得到的是到控制台的输出流。
回复 使用道具 举报
黑马网友  发表于 2011-7-16 16:55:12
板凳

回复 1 # 的帖子

我觉得这样理解容易点,
out也是一个静态变量,
静态变量的作用是,无论一个类有没有产生对象或者这个类产生了多少个对象,某些特定的数据空间里只有一份,始终都可以被使用,可以直接使用类名来访问该成员变量
System就是这个类,out是System类的一个PrintStream型的全局常量(用final 修饰就是常量)
class System {
        public static final PrintStream out = ********; //具体不清楚,功能是始终指向显示屏
}
直接用System.out来 调用out,可以把System.out整体看成一个PrintStream的实例化对象,这个对象不用new来实现,始终指向显示屏

评分

参与人数 1技术分 +2 收起 理由
admin + 2 恩,很好

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-16 17:31:09
报纸
查看JDK帮助文档就行了啊
public static final PrintStream out文档是这样定义的,out常量返回的是一个打印流!
这样System.out不就是PrintStream类的一个实例的吗,这样不就可以调用自己的方法。

评分

参与人数 1技术分 +2 收起 理由
admin + 2 好!!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-16 18:12:15
地板

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方法也就是合理的了。

评分

参与人数 1技术分 +2 收起 理由
admin + 2 恩,细心的童鞋!!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马