什么';这才是';新';Java中的运算符?

什么';这才是';新';Java中的运算符?,java,Java,如果“构造函数”在我们创建对象时分配内存并初始化实例变量,那么为什么我们要说Object o=new Object()? 为什么不干脆objecto=Object() 新操作符实际做什么?构造函数只初始化预先存在的对象。区别构造函数和方法调用的方法是使用new关键字。e、 g.您可以在类Object中使用名为Object的方法,但这可能不会创建任何内容。当您有子类时,这就更令人困惑了 class A { A() { } // constructor static A A() {

如果“构造函数”在我们创建对象时分配内存并初始化实例变量,那么为什么我们要说
Object o=new Object()?
为什么不干脆
objecto=Object()


新操作符实际做什么?

构造函数只初始化预先存在的对象。区别构造函数和方法调用的方法是使用
new
关键字。e、 g.您可以在类
Object
中使用名为
Object
的方法,但这可能不会创建任何内容。当您有子类时,这就更令人困惑了

class A {
    A() { } // constructor
    static A A() { return new A(); } // method
    static A B() { return new A(); } // method
}

class B extends A {
    B() { }
}

A b = new B(); // creates a B
A a = B.B(); // creates an A
new
关键字的作用是在创建新对象时将其弄清楚


顺便说一句,你可以有一个工厂方法,它按照你的建议返回一个新的对象,但是把它显式化可能会被认为更清楚它实际上在做什么。

构造函数只初始化预先存在的对象。区别构造函数和方法调用的方法是使用
new
关键字。e、 g.您可以在类
Object
中使用名为
Object
的方法,但这可能不会创建任何内容。当您有子类时,这就更令人困惑了

class A {
    A() { } // constructor
    static A A() { return new A(); } // method
    static A B() { return new A(); } // method
}

class B extends A {
    B() { }
}

A b = new B(); // creates a B
A a = B.B(); // creates an A
new
关键字的作用是在创建新对象时将其弄清楚


顺便说一句,你可以有一个工厂方法,它按照你的建议返回一个新的对象,但是把它显式化可能会让你更清楚地知道它实际上在做什么。

这就像它避免名称冲突一样有效

假设您有一个包含方法C、D和E的类a,但您还有另一个名为D的类,您希望在a中创建它的实例


如果没有类似new的东西,那么编译器将不知道您是否要调用该方法或创建新对象。

这与避免名称冲突一样有效

假设您有一个包含方法C、D和E的类a,但您还有另一个名为D的类,您希望在a中创建它的实例


如果没有类似new的东西,那么编译器将不知道您是否要调用该方法或创建新对象。

简而言之,
new
分配内存,构造函数将其设置。
x=Foo()
是一个方法调用
x=new Foo()
是一个构造函数调用
new实际上影响代码的理解方式。“新操作符通过为新对象分配内存并返回对该内存的引用来实例化类。新操作符还调用对象构造函数。”简而言之,
new
分配内存,构造函数设置它。
x=Foo()
是一个方法调用
x=new Foo()
是一个构造函数调用
new
实际上会影响代码的理解方式。“新操作符通过为新对象分配内存并返回对该内存的引用来实例化类。新操作符还调用对象构造函数。”