java - 如果存在,Java 中的 this() 应该始终首先执行吗?

标签 java constructor this

<分区>

考虑以下例子。

public class H{
    int a;

    public H(){
        a=5;
    }

    public H(String x){
        this();
    }

    {a=0;}

    public static void main(String []a){
        System.out.print(new H("").a);
    }
}

O/P 是5 这意味着初始化 block 在this() 之前先执行,但是根据Why do this() and super() have to be the first statement in a constructor?第一条语句应该是 this()。这是怎么发生的..???

最佳答案

如果你了解构造函数链

第一个 new H("") 调用你的参数化构造函数,它找到 this() 所以调用转到非参数化构造函数,在那里首先执行初始化程序,然后再次将 a 初始化为零您的 a =5 将 a 设置为 5 并最终打印 5

关于java - 如果存在,Java 中的 this() 应该始终首先执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25615979/

相关文章:

java - Java 新手 - 自定义事件处理程序

javascript - 为什么不需要在构造函数中指定变量?

npm - “NPM I”遇到错误: no matching constructor for initialization of 'v8::String::Utf8Value'

java - 将带有自定义参数的 Java 构造函数转换为 Objective-C 代码

jquery - 'this' 的 4 种不同场景。正确的解释是什么?

java - Web3j调用智能合约中的变量

java - JPanel 某些区域的 BalloonTip

javascript - 当用户取消选择 div 时停止代码运行

javascript - VueJS + Canvas-Context 如何链接在一起?

java - 将 Map<Enum, Enum> 存储为字符串