在类中声明变量字段后,为什么不能定义分配值?

问题描述

在普通班上,

public class MyClass {
    int a =12; 
} 

工作正常。

但是

public class MyClass {
    int a =12;
    int b;
    b=13;
} 

这会导致编译错误

我知道我试图在不使用该类对象的情况下访问字段,所以我什至尝试了这个->

public class MyClass {
    int a =12;
    int b;
    MyClass m= new MyClass();
    m.b=13;
} 

但即使这样似乎也不起作用。

我可以接受这样的事实,那就是事情是如何进行和发展的。但是有人知道这背后的逻辑吗?

谢谢。

解决方法

int a = 12;

这是带有初始化的变量声明。

b=13;

这是一项作业;一份声明;它不能是声明的一部分。它必须是构造函数或方法的一部分。

这是Java对象定义的工作方式。

  • 变量/字段声明
  • 构造函数
  • 方法(静态或非静态)
,

您可以通过以下两种方式之一进行操作:

  1. 按如下所示使用初始化块:

    int b;
    {
        b = 13;
    }
    
  2. 在构造函数中执行以下操作:

    b = 13;
    

选中https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html,以了解更多信息。