按照标准书,构造函数是用于初始化对象的一种特殊类型的函数。由于构造函数被定义为一个函数,并且内部类函数只能具有两种类型的静态或非静态类型。我怀疑是什么构造函数?
1.)As constructor is called without object so it must be static Test test =new Test();//Test() is being called without object so must be static
我的疑问是如果构造函数是静态方法,那么我们如何在构造函数内部频繁使用此方法
Test(){ System.out.println(this); }
输出是否Test@12aw212意味着构造函数是非静态的?
Test@12aw212
您的第二个例子很重要。this引用在构造函数中可用,这意味着构造函数是针对某个对象(当前正在创建的对象)执行的。
this
原则上,当您创建新对象时(使用new运算符),JVM将为其分配一些内存,然后在该新创建的对象上调用构造函数。JVM还确保在构造函数之前不会调用其他任何方法(这使得它变得特别)。
new
实际上,在机器级别,构造函数是具有一个特殊的隐式this参数的函数。该特殊参数(运行时传递)使对象方法和静态方法有所不同。换一种说法:
foo.bar(42);
转换为:
bar(foo, 42);
第一个参数命名为this。另一方面,static方法按原样称为:
static
Foo.bar(42);
bar(42);
Foo 这只是源代码中几乎不存在的名称空间。
Foo