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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 HM周一帆 于 2013-3-31 22:29 编辑

为什么呢

10 个回复

正序浏览
多看看JDK API吧,这些问题不需要问的,自己要掌握好自学的方法
数组有length属性,String有length这个方法, int length() : 返回此字符串的长度。

回复 使用道具 举报
String str="qwert";
int cd=str.length();
这个是String的方法
回复 使用道具 举报
数组中的length是属性,String中的length()才是方法,这个得记住
回复 使用道具 举报
这个问题其实我也困惑过。。。今天看到你的问题才引起我真正的关注~~

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

声明:以下内容非本人原创。全部引用自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对数组的操作是指令级的。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 很给力!

查看全部评分

回复 使用道具 举报
张钶 发表于 2013-3-30 21:42
大哥,你都20分的技术分了还问这个

20分的人就很牛逼吗?没有这么理论吧!多正常,说明人家善于问问题!
回复 使用道具 举报
张钶 发表于 2013-3-30 21:42
大哥,你都20分的技术分了还问这个

我怎么觉得你这话说的 这么悦耳动听呢。。。{:3_46:}
回复 使用道具 举报
楼主你好    你是想问length()和length的区别的吧

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

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
大哥,你都20分的技术分了还问这个
回复 使用道具 举报
没有为什么
回复 使用道具 举报
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马