繁体   English   中英

为什么我们不能在 java 的 class 构造函数中声明变量?

[英]Why we can't declare variables in class constructor in java?

如果构造函数是在 object 创建时隐式调用的函数,那么我们应该在构造函数中声明变量,但它会给出错误。

class A{
    
    public A(){
        int a =5;
    }
}


public class assignment2 {
    public static void main(String[] args) {
       A obj = new A();
       System.out.println(obj.a);
    }
}

错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
        a cannot be resolved or is not a field

        at ass2.main(ass2.java:14)

变量int a不是字段,但正如您所说,变量和构造函数完成后立即无法访问,而且绝对不是obj.a

如果您希望以这种方式使用它,您应该将它的定义移到构造函数之外(所以基本上是创建字段a

Java POJO中的字段、变量、属性和属性有什么区别?

class A{
    public int a;

    public A(){
        this.a =5;
    }
}

有关声明构造函数的更多信息,请参阅: https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

它只是一个成员变量,不属于 obj,你应该将 a 声明为局部变量:

public class Test{
    public int a = 5;
    public Test() {
        
    }
}

在构造函数int a中声明变量(在您的情况下)仍将在构造函数中本地工作。 当构造函数完成他的工作时, a变量将被销毁。 所以你不能从另一个地方访问这个变量。

创建一个字段并使您的代码工作。 在构造函数之外进行声明。 然后你可以在构造函数中初始化它..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM