考虑Calculator使用以下代码命名的类:
class Calc extends Calculator {
Calculator calculator; // [Style 1]
Calculator calculator = new Calculator(); // [Style 2]
}
Run Code Online (Sandbox Code Playgroud)
据我所知,没有分配内存[1],但在语句中创建[2]了一个新Calculator对象.
除此之外是否还有其他差异?
当你写作
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'不是一个对象,它只是对这个对象的引用.您可以对同一对象具有多个引用.
更新:关于本主题的标题,创建类的实例和创建对象是完全相同的.我的意思是,我相信,声明对象的引用与使用就地分配声明它(虽然我不完全确定术语):-)