黑马程序员技术交流社区

标题: java 中length与lehgth()区别 [打印本页]

作者: sjtree    时间: 2015-8-19 17:53
标题: java 中length与lehgth()区别
还有 为什么  System.in  System.out调用时后面不用加()
作者: 黄蒙    时间: 2015-8-19 18:00
length是代表对象的成员吧,而length();则是表示你调用了这个对象的方法,返回的是长度数值(int);System.in也是调用对象中的成员,本质是一个输入流对象。
作者: zhao1991    时间: 2015-8-19 18:20
一个是成员变量,一个是成员方法
作者: 蓬头小道士    时间: 2015-8-19 20:25
length用在求数组的长度,length()是字符串的长度。
作者: 龙哥Longer    时间: 2015-8-19 20:48
学习了,谢谢分享~
作者: pengbeilin    时间: 2015-8-19 21:42
本帖最后由 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, 下载次数: 8)

QQ截图20150819214100.png

作者: beimenshisan    时间: 2015-8-19 22:59
length 是数组的属性,代表数组的长度, length()是方法
作者: helloxiaoyu    时间: 2015-8-19 23:58
问题很好,来学习下
作者: koibiki    时间: 2015-8-20 00:15
一个是方法一个是属性
作者: code_linux    时间: 2015-8-20 00:22
带着同样的问题受教了!!
作者: Marx_D    时间: 2015-8-20 00:27
嗯,是个问题。
作者: MoonsenHung    时间: 2015-8-20 00:33
一个是数组的属性,一个是方法,带括号的是方法。
作者: mmppp    时间: 2015-8-20 17:31
为什么System.out.println()是这个样子的呢
首先,System是一个类.类调用方法.所以是System.out
然后out不是一个方法啊.就是一个成员变量而已.就像你Student.name
name后面不是也不加吗,然后System.out这个的返回值是printStream类型的
这个你不知道没关系.然后既然是这个类型的对象,就可以调用这个类里面的方法
对吧.然后println()就是这个类里面的方法.
所以连起来才是System.out.println()这个样子的




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