黑马程序员技术交流社区

标题: 问一下length和length()的区别 [打印本页]

作者: danerchen    时间: 2014-4-23 18:32
标题: 问一下length和length()的区别
貌似记得length是数组长度的方法,而length()是字符串的方法,有时候写着写着就搞混淆了,求方法,谢谢!

作者: igi9009    时间: 2014-4-23 18:34
本帖最后由 igi9009 于 2014-4-23 18:37 编辑
  1. String c = "aaa";

  2. System.out.println(c.length());    //结果为3



  3. String[] d = new String[2];

  4. d[0]="1";d[1]="2";

  5. d.length; //结果为2
复制代码

length与length()都是求长度的属性。length是针对数组的函数,而length()是指字符的长度
作者: 今生无憾    时间: 2014-4-23 18:39
length是属性,length()有括号的是方法。  一般有length属性,常出现的是数组。而length()方法 常用的是String及其相关的类
作者: \(^o^)/    时间: 2014-4-23 18:39
length是针对数组求数组的长度的,而length()是针对字符串求长度的。
作者: 陈妙俊    时间: 2014-4-23 18:42
1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.

2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.

3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!
作者: 天山    时间: 2014-4-23 18:43
java中length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.

java中length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.
作者: fufeng    时间: 2014-4-23 18:52
     length表示的是属性,而length()则表示的是方法;其实也就是他们的调用方式是不一样的,
     比如【数组】的长度,我们在定义数组的时候就已经规定了其长度,也就不需要计算它的长度了,直接用
数组名.length来调用该属性的值就可以了。
    字符串是一个String类的对象,他的长度是不确定的,比如你随便写一个字符串就是一个对象,但是字符串中的字符长度是没有确定的,所以需要调用该对象中的方法length()来计算字符串的长度。
     说白了就是对象一创建就定义值的属性,直接调用属性名就可以了,创建之初没有定义的属性,则需要调用内部方法来计算获得
              
作者: 한숨짓다    时间: 2014-4-23 23:34
本帖最后由 한숨짓다 于 2014-4-23 23:46 编辑

(1)总结了一些求长度的方法:
1.String类中的int length(): 返回此字符串的长度。
2.Array类中的static int getLength(Object array) :以 int 形式返回指定数组对象的长度。
3.常见的集合类ArrayList、LinkedList、Vector、HashSet、TreeSet、HashMap类中的有
  int size()  :返回此列表中的元素数。
(2)对于length和length()深层次理解记忆:
1.问题:在所有数组中有唯一的一个属性——length,那么这个属性是在Java的哪一个类中的呢?这些数组的这个属性是从哪来的?
2.答:数组是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字节码中有许多单独针对数组的指令,它们在其它任何非数组类型的对象上调用都是毫无意义的。
由此可见,它们本质就不一样,不能等同起来直接进行对比            
希望对你的疑惑有帮助!






作者: 清风夜独醉    时间: 2014-4-24 00:05
length是java中的属性,可以直接使用;length()是类中的方法。length多用于数组,length()多用于字符串等。两者都是获取长度
作者: Dijkstra    时间: 2014-4-24 00:09
你记住,length用于数组,length()用于字符串,size()用于集合,一切就 OK 了
作者: 四川男人    时间: 2014-4-24 00:13
数组中的是属性,字符串中是方法,属性没有括号length,方法有括号length(),这样就不会混淆了
作者: dongdong5982    时间: 2014-4-24 07:19
length是属性,length()有括号的是方法。
作者: 诺忔。初禾、    时间: 2014-4-24 08:57
length是数组的长度,length()这个有括号是方法特有的
作者: eternallove    时间: 2014-4-24 22:22
java中的length属性是针对数组说的 , 比如说你声明了一个数组  ,  想知道这个数组的长度则 用到了length这个属性  .   
java  中的length()方法是针对字符串String说的 ,
java中的size()方法是针对集合说的,如果想看这个集合有多少个元素,就调用此方法
作者: 大恶魔先森~    时间: 2014-4-24 22:40
length是数组的属性,比如一个数组arr[],那么arr.length表示数组的长度。而length()是String类的方法,表示字符串的长度。
作者: 小周务商    时间: 2014-4-25 13:17
一个是长度。一个是方法。




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