Java 为什么在创建构造函数之前不初始化实例变量。如果它们在类加载时初始化,会发生什么

Java 为什么在创建构造函数之前不初始化实例变量。如果它们在类加载时初始化,会发生什么,java,c#,Java,C#,正如我们所知,构造函数的目的是初始化实例变量,如果它们是在自身之前初始化的,那会影响代码吗 例如,您可以有更多的构造函数。如果您在线初始化一个字段,它将始终带有一个值 如果你在一个构造器中这样做,也许你可以决定不需要在另一个构造器中 一般来说,内联init位于构造函数之前,因此构造函数可以覆盖它,例如在java中: package test; public class Test { private String field1 = "INLINE"; public Test(

正如我们所知,构造函数的目的是初始化实例变量,如果它们是在自身之前初始化的,那会影响代码吗

例如,您可以有更多的构造函数。如果您在线初始化一个字段,它将始终带有一个值

如果你在一个构造器中这样做,也许你可以决定不需要在另一个构造器中

一般来说,内联init位于构造函数之前,因此构造函数可以覆盖它,例如在java中:

package test;

public class Test {

    private String field1 = "INLINE";

    public Test() {
        System.out.println( "field1 value "+this.field1 );
        this.field1 = "CONSTRUCTOR";
    }

    public String getField1() {
        return field1;
    }

    public static void main( String[] args ) {
        Test t = new Test();
        System.out.println( t.getField1() );
    }

}
结果将是

field1 value INLINE
CONSTRUCTOR

C还是JAVA?因为它们处理成员的初始化非常不同。请提供一个简短的示例,说明您到底在问什么。如果它们是在自身之前(在Java中)初始化的,那么它们不是。当在字段中指定初始值设定项时,编译器会将这些初始值设定项内联到构造函数中。它们不能是,因为它们属于特定实例,因此名称为:实例变量。欢迎使用Stackoverflow!请花点时间阅读