黑马程序员技术交流社区

标题: 数组有没有length()这个方法? String有没有length()这个方法? [打印本页]

作者: HM周一帆    时间: 2013-3-30 21:12
标题: 数组有没有length()这个方法? String有没有length()这个方法?
本帖最后由 HM周一帆 于 2013-3-31 22:29 编辑

为什么呢
作者: 苏冉    时间: 2013-3-30 21:23
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
作者: 胡志超    时间: 2013-3-30 21:28
没有为什么
作者: 张钶    时间: 2013-3-30 21:42
大哥,你都20分的技术分了还问这个
作者: 袁梦希    时间: 2013-3-30 21:46
楼主你好    你是想问length()和length的区别的吧

length()可以看的出是某个类的方法,适合对象的调用。
而length 某个类中的属性,只有为静态的时候才能被所在的类调用。

length()方法一般在是指字符串的长度,而length属性一般是指数组的长度,还有一种方法与他们类似就是size(),一般用在集合中。

作者: 苏冉    时间: 2013-3-30 21:52
张钶 发表于 2013-3-30 21:42
大哥,你都20分的技术分了还问这个

我怎么觉得你这话说的 这么悦耳动听呢。。。{:3_46:}
作者: 黑马19我最牛    时间: 2013-3-30 21:56
张钶 发表于 2013-3-30 21:42
大哥,你都20分的技术分了还问这个

20分的人就很牛逼吗?没有这么理论吧!多正常,说明人家善于问问题!
作者: 王俊杰    时间: 2013-3-30 21:58
这个问题其实我也困惑过。。。今天看到你的问题才引起我真正的关注~~

我帮你查找到了一个相对满意的答案。希望对你有所帮助 ~~~

声明:以下内容非本人原创。全部引用自BruceZMF的博客
http://blog.sina.com.cn/s/blog_680f6fa70100kg7b.html
在此谨向BruceZMF致敬

在他的博客里对这个length的问题作了深层次的探讨,即便不能彻底领会底层知识,至少也可以获得某种启发
祝共同进步!!

(一)问题 在所有数组中有唯一的一个属性——length,那么这个属性是在Java的哪一个类中的呢?这些数组的这个属性是从哪来的?不明白....
  (二)回复
  数组是Java特殊处理过的,
  int   i   =   args.length;

  可以通过javap   看到指令为
  aload_0
  arraylength
  istore_1
  return

  可见Java专门为Array定义了取得长度的指令了

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

------------------------------------------------------------------------------
  1.length不是array的方法或者属性
这个很好证明:new个数组出来   getDeclaredFields()是0
  2.java对数组的操作是指令级的。


作者: 赵喜平    时间: 2013-3-30 21:59
数组中的length是属性,String中的length()才是方法,这个得记住
作者: 郭沐昌    时间: 2013-3-30 22:01
String str="qwert";
int cd=str.length();
这个是String的方法
作者: HM李超    时间: 2013-3-30 22:20
多看看JDK API吧,这些问题不需要问的,自己要掌握好自学的方法
数组有length属性,String有length这个方法, int length() : 返回此字符串的长度。






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