length和length()到底有什么区别
length是属性,而length()是方法 为什么要这么回答 下面我来罗列一些列子来说明:
大家都知道我们在定义数组时:
int []arr = new int [3];
int [] arr2 = {1,2,3};
上面定义了定义了两个一维数组(数组是容器,既然是容器了length就该是属性,不知道我这么说各位是否理解),下面罗列下二维数组:
int [][]arr = new int [3][];
int [][]arr2 = {{},{}};
System.out.println(arr.length);
System.out.println(arr2.length);
3
2
我为何要罗列下二维数组,因为我想强调:数组在定义时就确定了空间大小。不管是几维。二维数组 arr[1] 这里存储的是:一个一维数组的地址(一维数组的首地址)。 所以这也说明length是个属性,(数组刚一定义就确定了该属性的大小)。
/*
补个小插曲:为什么在定义二维数组时,不用指明二维的第二个维度
因为二维数组存储的是一维数组的地址,定义二维数组只要说明,你要定义几个二维数组就行了
*/
下面需要解释下String类型,序列的长度为什么是length().
String 底层数据结构是 char[],这样的一个一维字符数组,因此String拥有的就是length()这个方法,而不是length这个属性。就像Collection这个集合。
//以上是个人见解,如有错误请指正。