根据标准的book构造函数是一种特殊类型的函数,用于初始化对象.构造函数被定义为函数,而类函数内部只能有两种类型的静态或非静态.我怀疑构造函数是什么?
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
Run Code Online (Sandbox Code Playgroud)
我怀疑的是,如果构造函数是静态方法,那么我们如何经常使用这个内部构造函数
Test(){
System.out.println(this);
}
Run Code Online (Sandbox Code Playgroud)
输出Test@12aw212意味着构造函数是非静态的吗?
Tom*_*icz 12
你的第二个例子击中了现场.this引用在构造函数中可用,这意味着构造函数是针对某个对象(当前正在创建的对象)执行的.
原则上,当您创建一个新对象(通过使用new运算符)时,JVM将为其分配一些内存,然后在该新创建的对象上调用构造函数.此外,JVM确保在构造函数之前没有调用其他方法(这就是它的特殊之处).
实际上,在机器级别上,构造函数是一个具有一个特殊隐式this参数的函数.此特殊参数(由运行时传递)使对象和静态方法之间存在差异.换一种说法:
foo.bar(42);
Run Code Online (Sandbox Code Playgroud)
被翻译成:
bar(foo, 42);
Run Code Online (Sandbox Code Playgroud)
其中第一个参数的名称this.另一方面,static方法被称为原样:
Foo.bar(42);
Run Code Online (Sandbox Code Playgroud)
翻译为:
bar(42);
Run Code Online (Sandbox Code Playgroud)
Foo 这里只是源代码中几乎没有的命名空间.