当你写:
public Test()
{
System.out.println("constructor");
}
这绝对是一个构造函数。而且,正如你的写作创建测试类的第一个对象:
Test t1 = new Test();
这将调用构造函数的第一次,你已经写在打印语句的代码,也就是构造将在控制台上打印。请记住,创建类的对象时会自动调用构造函数。
你第二次通过书面形式创建对象:
Test t2 = new Test();
这将调用相同的构造函数,并打印相同的“构造”在屏幕上,但它是第二次。
所以,你得到的答案原样 构造 构造
在第二种情况下,当你写:
public void test()
{
System.out.println("constructor");
}
你的编译器就会把它当作一个方法,而不是构造函数。
即使void不返回任何东西,它是一个“返回类型”,构造函数永远不会有返回类型。 这并不意味着它们不会返回任何东西,但它们只是没有返回类型。
因此,创建类的对象时不会自动调用方法。所以,你不应该期望同样的结果。
现在,您会得到一个空输出,因为编译器会为每个类提供一个虚拟/默认构造函数,即使您没有定义它。而且,无论您是否明确地调用它,每次创建该类的对象时都会调用此默认构造函数!
默认的构造函数可以被认为是书面的地方为:所以现在你可以想像,当你创建两个对象发生了什么
test() { }
,计划将编译和运行正常,空输出返回到你!
我希望对你有帮助。
构造函数没有返回类型 –
请参阅 http://stackoverflow.com/questions/6801500/why-do-constructors-in-java-not-have-a-return-type – Swapnil
@Jayram构造函数在'JVM'中有一个'void'返回类型,但它远离开发者隐藏 – Anirudha