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

© sjtree 中级黑马   /  2015-8-19 17:53  /  625 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

还有 为什么  System.in  System.out调用时后面不用加()

13 个回复

正序浏览
mmppp 中级黑马 2015-8-20 17:31:03
13#
为什么System.out.println()是这个样子的呢
首先,System是一个类.类调用方法.所以是System.out
然后out不是一个方法啊.就是一个成员变量而已.就像你Student.name
name后面不是也不加吗,然后System.out这个的返回值是printStream类型的
这个你不知道没关系.然后既然是这个类型的对象,就可以调用这个类里面的方法
对吧.然后println()就是这个类里面的方法.
所以连起来才是System.out.println()这个样子的
回复 使用道具 举报 1 0
一个是数组的属性,一个是方法,带括号的是方法。
回复 使用道具 举报
嗯,是个问题。
回复 使用道具 举报
带着同样的问题受教了!!
回复 使用道具 举报
一个是方法一个是属性
回复 使用道具 举报
问题很好,来学习下
回复 使用道具 举报
length 是数组的属性,代表数组的长度, length()是方法
回复 使用道具 举报
本帖最后由 pengbeilin 于 2015-8-20 09:58 编辑

数组的length即不是方法,也不是字段。在一个数组对象上调用length,会被Java编译器编译成一条arraylength指令(Java binary code)。
而访问字段的语句会被编译成getfield或getstatic指令,调用方法的语句则会被编译成invokestatic,invokevirtual或invokespecial等指令。
Java字节码中有许多单独针对数组的指令,它们在其它任何非数组类型的对象上调用都是毫无意义的。
由此可见,它们本就不一样,不能等同起来直接进行对比。

String里length()是一个方法




QQ截图20150819214100.png (54.31 KB, 下载次数: 2)

QQ截图20150819214100.png
回复 使用道具 举报
学习了,谢谢分享~
回复 使用道具 举报
length用在求数组的长度,length()是字符串的长度。
回复 使用道具 举报
一个是成员变量,一个是成员方法
回复 使用道具 举报
length是代表对象的成员吧,而length();则是表示你调用了这个对象的方法,返回的是长度数值(int);System.in也是调用对象中的成员,本质是一个输入流对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马