目录
先看一些例子:
public class test { public static void main(String[] args){ // 示例一 String str = "abc"; System.out.println(str.length()); //示例二 String[] str1 = {"abc","dsa"}; System.out.println(str1.length); //示例三 int[] arr = {1,2,3}; System.out.println(arr.length); } }
上面是通过IDEA来编辑的,它会提醒你是用length还是length()。所以问题来了,为什么第一个示例提示使用length(),而第二个和第三个提示我们用length呢?
深究:
先看第一个示例:我们按住Ctrl然后鼠标左击length()进入查看方法的实现。发现length()它背后的方法是返回了value.length,继续查看value,如右图所示,它定义的是一个字符数组。
通过上面的查看,我们终于明白了,原来字符串是通过char数组来存储的。
那为什么数组可以有自己的length属性呢?
原因是数组是一个容器对象,其中包含固定数量的同一类型的值。一旦数组被创建,他的长度就是固定的了。数组的长度可以作为final
实例变量的长度。因此,长度(length)可以被视为一个数组的属性。
所以,既然本质都是数组,那字符串也就没有必要来定义一个不必要的属性(因为该属性在char数值中已经提供了)。
总结:
- Java中String类定义的字符串对象,用length()求它的长度。
- 若是数组求长度,均可使用他们自己的属性length。
对求长度的总结:
- 数组.length 属性 ,返回值 int
- 字符串.length() 方法,返回值int
- 集合.size() 方法,返回值int