当你写:
public Test()
{
System.out.println("constructor");
}
这绝对是一个构造函数。而且,当您通过编写创建 Test 类的第一个对象时:
Test t1 = new Test();
这将第一次调用您的构造函数,并且您在 print 语句中编写的代码,即构造函数将打印在控制台上。请记住,当您创建类的对象时会自动调用构造函数。
第二次通过编写创建对象:
Test t2 = new Test();
这将调用相同的构造函数,并在屏幕上打印相同的“构造函数”,但这将是第二次。
所以你得到了答案——构造函数构造函数
在第二种情况下,当您编写时:
public void test()
{
System.out.println("constructor");
}
您的编译器会将其视为方法而不是构造函数。
即使 void 不返回任何东西,它也是一个“返回类型”,构造函数永远不会有返回类型,永远不会。这并不意味着它们不返回任何东西,只是它们没有返回类型。
因此,在创建类的对象时不会自动调用方法。所以,你不应该期望同样的结果。
现在,您得到一个空输出,因为编译器为每个类提供了一个虚拟/默认构造函数,即使您没有定义它。并且,无论您是否显式调用它,每次创建该类的对象时都会调用此默认构造函数!
默认构造函数可以被认为是写在某处:
test() { }
所以现在你可以想象当你创建两个对象时会发生什么,程序会正确编译和运行,返回空输出给你!
我希望这对你有所帮助。