有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

方法体之外的java类中的字段初始化

请解释以下行为,为什么第一条语句有效,而另一条语句无效并抛出错误

public class Test{
    private String firstName="John";// is Valid
    //Below is invalid
    private String lastName; 
    lastname="Doe";
}

共 (1) 个答案

  1. # 1 楼答案

    类只能包含声明(以及静态/实例初始值设定项)。根据firstName,字段声明可以包含初始值设定项,并且lastName的声明是有效的,但它后面的赋值只是一个语句,类不能直接包含语句

    如果要将声明与赋值分开,则需要将赋值放在构造函数中:

    public class Test {
        private String lastName;
    
        public Test() {
            lastName = "Doe";
        }
    }
    

    或者使用instance initializer(在我的经验中不太常见):

    public class Test {
        private String lastName;
    
        {
            lastName = "Doe";
        }
    }