好的,我有这段代码:
public class Test {
public static void main(String[] args) {
String[] people = {"Bob", "Billy", "Jim"};
int sum = 0;
for(int i = 0; i < people.length; i++) {
sum += people[i].length();
}
}
}
我的问题是为什么people[i].length()
是.length()
而不是.length
。我想要使用.length
而不是.length()
来获取数组的长度。您是否使用.length()
因为您试图获取字符串的长度而不是数组?附:我是初学者,所以这对你来说似乎很明显,但这不适合我。
答案 0 :(得分:17)
他们是完全不同的两件事。
.length
是数组上的属性。这不是方法调用。
.length()
是String
上的方法调用。
你看到了两者,因为首先,你在数组的长度上进行迭代。数组的内容为String
,您希望将它们的所有长度相加,这样您就可以调用数组中每个String
的长度。
答案 1 :(得分:2)
.length
适用于数组,.length()
适用于字符串
数组的长度是一个字段,而字符串的长度是一个函数 - .length()
答案 2 :(得分:1)
.length
是一个数组属性。 .length()
是类String
(look here)的方法。
循环时,使用people.length
循环显示数组的长度。
但是当您使用people[i].length()
时,您正在访问数组该位置的字符串,并获取字符串的长度,因此使用.length()
方法在String
班。
但是,为了让您更加困惑,String
的核心只是一个char
的数组(如下所示:char[]
)。可以认为.length
也应该有效,因为它是一个字符数组,但是,它是一个类,这就是.length
无法工作的原因。显示空参数显示它是一个方法,并且显示没有参数显示它是一个属性(如类中的static
变量)。