我注意到在做数组的长度时,你会写出类似的东西:
arrayone.length;
但是,对于数组列表或字符串这样的东西,你在末尾写一个括号,如下面的字符串长度:
stringone.length();
这个的关键原因是什么?你怎么知道何时放括号或现在?
答案 0 :(得分:9)
.length;
直接访问字段成员。
.length();
调用方法(即访问者)来访问字段成员。
在String
的情况下,这是预期的,因为它是不可变的。
答案 1 :(得分:4)
Arrays
的处理方式与Strings
或ArrayLists
或其他可在Java中计算的内容不同。 Array
几乎是一个本机类型,它的长度在初始化后永远不会改变,所以不需要封装。长度变量可以直接暴露,没有副作用。
String
使用方法而不是变量的原因是因为它在内部使用了一个它不想公开公开的char[]
(用于不变性/封装),所以它包装了长度length()
方法中的变量。这与ArrayList
使用size()
方法而非length
变量的原因相同。
您使用变量而不是方法的唯一时间是使用数组。其他一切都是方法。也就是说,除了数组之外,你将使用括号。
答案 2 :(得分:2)
知道何时使用哪一种是经验的唯一真实方法。虽然具有自动完成功能的IDE通常会在您不记得时帮助您。
对于大多数(并非总是)array.length,System.out和System.err是最常见的3,它们实际上是成员访问而不是方法调用。
答案 3 :(得分:0)
.length()是String类的一种方法,它返回字符串中的字符数。
.length将给出存储在数组中的元素数量。
public class length
{
public static void main(String args[])
{
String x="test";
int a[]={1,2,3,4};
System.out.println(x.length());
System.out.println(a.length);
}
}
// output
4
4
答案 4 :(得分:0)
Array.length
是Array
的属性,类似于变量引用。
ArrayList.size()
是对数组列表对象的实际方法调用。
答案 5 :(得分:0)
int[] myArray = new int[10];
String myString = "hello world!";
List<int> myList = new ArrayList<int>();
myArray.length //gives the length of the array
myString.length() //gives the length of the string
myList.size() //gives the length of the list
很可能字符串和数组是在不同的时间设计的,因此最终使用了不同的约定。一个理由是,由于Strings在内部使用数组,因此使用方法length()来避免重复相同的信息。最终,这只是一种不一致的演变,如果语言从头开始重新设计,肯定会被修复。 :d
答案 6 :(得分:0)
主要区别在于A)第一种情况,其数组类型为例如int[]
,Object[]
,double[]
等,其中包含一个名为lenght的公共字段和B )第二种情况是一个Object String,它有一个名为length()
的函数,该函数可以被称为getLength()
或其他东西。数组类型公共字段长度可能是C ++处理方式的宿醉。
数组类型具有以下内容:
答案 7 :(得分:0)
length
是一个伪数据成员引用,仅适用于(small-a)数组(忽略您可能定义的实现该成员的类)。
其他所有内容都是类的对象,所有具有此概念的JDK类都定义了length()
或size()
实例方法。 (我确实希望他们能够保持一致并选择其中一个,但那是桥上的水。)