gpt4 book ai didi

java - 构造函数是静态的还是非静态的

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:53 25 4
gpt4 key购买 nike

根据标准书,构造函数是一种特殊类型的函数,用于初始化对象。由于构造函数被定义为函数,并且类内部函数只能有静态或非静态两种类型。我怀疑构造函数是什么?

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 是否意味着构造函数是非静态的?

最佳答案

你的第二个例子恰到好处。 this 引用在构造函数中可用,这意味着构造函数是针对某个对象执行的 - 当前正在创建的对象。

原则上,当您创建一个新对象(通过使用new 运算符)时,JVM 会为其分配一些内存,然后在该新创建的对象上调用构造函数。此外,JVM 确保在构造函数之前没有调用其他方法(这就是它的特殊之处)。

实际上,在机器层面上,构造函数是一个函数,带有一个特殊的、隐式的 this 参数。这个特殊参数(由运行时传递)区分了对象方法和静态方法。换句话说:

foo.bar(42);

翻译成:

bar(foo, 42);

第一个参数被命名为this。另一方面,static 方法按原样调用:

Foo.bar(42);

转换为:

bar(42);

Foo 这里只是源代码中勉强存在的命名空间。

关于java - 构造函数是静态的还是非静态的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12940421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com