在漫无边际的代码世界里,对我们的要求不仅仅只是一种语言的可能,当然语言和语言直接,同样有一些长得很像的,看上去一样的,今天写一下 length 和length()。
不知道大家小时候有没有看过燕子妈妈让小燕子去看冬瓜和茄子之间区别的故事,今天我们就按照这个故事的内容聊一聊。
一个有括号,一个没有括号
没有错!
length 是属性!
int arr[] =new int[]{2,3,4};
int len= arr.length;
System.out.println(len);
是数组的属性 ,用来获得数组的长度
注:数组的长度和下标是有区别的哦!
length() 是方法!
String str = "要好好写代码";
str.length();
System.out.println(str.length());
是字符串的的方法,但是字符串为什么不直接加这个属性呢,原因是字符串的底层是由char()数组构成的,如果在加同样的属性,是不是有点多此一举了呢?
帮助文档内容如下:
String
类代表字符串。 Java程序中的所有字符串文字(例如"abc"
)都被实现为此类的实例。
字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。 例如:
String str = "abc";
相当于:
char data[] = {'a', 'b', 'c'}; String str = new String(data);
帮助文档内容如下:
-
-
-
public int length()
返回此字符串的长度。 长度等于字符串中的数字Unicode code units 。
Specified by:
length
在界面CharSequence
结果
由该对象表示的字符序列的长度。
-
-
java中如上所说!
而在JavaScript中
var str ='今天心情同样很好哦';
console.log(str.length);
length同样可以获取字符串的长度,还可以
var arr= [];
console.log(arr.length);
获取数组的长度;
但是JavaScript中数组可以通过arr.length =100; 来实现数组扩容,扩容未赋值的话就是undefined哦。
说到这里小伙伴或许还可以想到java中size()的方法。
List<String>list = new ArrayList<>();
list.add("集");
list.add("合");
System.out.println("集合的长度是:"+list.size());
看一下源码
private final E[] a;
ArrayList(E[] array) {
if (array==null)
throw new NullPointerException();
a = array;
}
public int size() {
return a.length;
}
可以看出来底层依然是数组,最后还是通过length属性来完成。
最后总结一下咯
length 不是方法不是方法不是方法 是属性
length() 是获取字符串长度的方法
size() 是获取集合泛型数量的方法
望谨记!