java中没有括号

Chr*_*cle 2 java parentheses

我正在学习Java,并且我已经知道方法使用括号来传递参数.但是,我也注意到有时候我看到代码对我来说看起来像一个方法,但它没有括号.

MyObject.something()

MyObject.somethingElse
Run Code Online (Sandbox Code Playgroud)

whereElse没有括号.我假设这类似于arrayList具有size方法来获取其大小:

myList.size()
Run Code Online (Sandbox Code Playgroud)

而数组的长度可以得到它的大小,而没有括号:

myArray.length
Run Code Online (Sandbox Code Playgroud)

我的假设是否正确?如果没有,有什么区别? 这可能是一个基本问题,但由于我需要解释这个问题的数量,我在搜索它时遇到了麻烦.

T.J*_*der 9

somethingElse属性(数据成员),而不是方法.访问该成员时,不会运行类中的代码,这与运行类中的代码的方法不同.

这是一个例子:

public class Foo {

    public int bar;

    public Foo() {
        this.bar = 42;
    }

    public int getBlarg() {
        // code here runs when you call this method
        return 67;
    }

}
Run Code Online (Sandbox Code Playgroud)

如果您创建一个Foo对象:

Foo f = new Foo();
Run Code Online (Sandbox Code Playgroud)

...你可以在没有parens的情况下进入酒店 bar:

System.out.println(f.bar);        // "42"
Run Code Online (Sandbox Code Playgroud)

...你可以使用parens 调用该方法getBlarg:

System.out.println(f.getBlarg()); // "67"
Run Code Online (Sandbox Code Playgroud)

当您调用时getBlarg,getBlarg方法中的代码将运行.这与访问数据成员根本不同foo.