【问题标题】:When to use .length vs .length() [duplicate]何时使用 .length 与 .length() [重复]
【发布时间】:2025-12-03 03:40:02
【问题描述】:

好的,我有这个代码:

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() 是因为您试图获取字符串的长度而不是数组的长度?附:我是初学者,所以这对你来说可能很明显,但对我来说不是。

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    它们是两个完全不同的东西。

    .length数组 上的属性。这不是方法调用。

    .length() 是对String 的方法调用。

    您会同时看到这两种情况,因为首先,您正在遍历数组的长度。数组的内容是String,并且您想将它们的所有长度相加,因此您可以调用数组中每个单独String 的长度。

    【讨论】:

    • 我认为在这里使用“对象”这个词可能会让初学者感到困惑。也许是“不同的东西”?
    • 好吧,数组从技术上来说是一个对象......但你可能有一点。
    • 谢谢,我想我现在明白了。
    【解决方案2】:

    .length 是一个数组属性。 .length() 是类 String (look here) 的方法。

    当您循环时,您使用people.length 循环数组的长度。

    但是当您使用people[i].length() 时,您正在访问数组该位置的字符串,并获取字符串的长度,因此在@987654328 中使用.length() 方法 @类。

    但是,为了让您更加困惑,String 的核心只是 chars 的数组(例如:char[])。考虑到它是一个字符数组,人们可以提出.length 应该也可以工作的论点,但是,它是一个,这就是.length 不起作用的原因。显示空参数表明它是一个方法,不显示参数表明它是一个属性(就像一个类中的static 变量)。

    【讨论】:

      【解决方案3】:

      .length 用于数组,.length() 用于字符串

      数组的长度是一个字段,而字符串的长度是一个函数 - .length()

      【讨论】: