对象引用声明和对象构造之间的区别?

Boo*_*ajP 2 java

考虑Calculator使用以下代码命名的类:

class Calc extends Calculator {

    Calculator calculator;                    // [Style 1]

    Calculator calculator = new Calculator(); // [Style 2]
}
Run Code Online (Sandbox Code Playgroud)

据我所知,没有分配内存[1],但在语句中创建[2]了一个新Calculator对象.

除此之外是否还有其他差异?

And*_*lov 6

当你写作

Calculator calculator;
Run Code Online (Sandbox Code Playgroud)

它只表示您声明对类型对象的引用Calculator.引用不是对象,因此不分配内存.

当你写作

new Calculator();
Run Code Online (Sandbox Code Playgroud)

它构造了类型的对象Calculator并返回对该对象的引用.

所以,当你写作

Calculator calculator = new Calculator();
Run Code Online (Sandbox Code Playgroud)

这意味着您构造对象并存储对它的引用calculator.

'calculator'不是一个对象,它只是对这个对象的引用.您可以对同一对象具有多个引用.

更新:关于本主题的标题,创建类的实例创建对象是完全相同的.我的意思是,我相信,声明对象的引用使用就地分配声明它(虽然我不完全确定术语):-)