我的带有 final 关键字的 java 代码有错误

My java code with final keyword has error

// final keyword usage 
package workarea;
    
final class demo {
        
    final int x=10;
    ////compile time exception here because ‘x’ is final type
    System.out.println("hello modified x value is:"+ x);
    final void m1()
    {
        int x=2;
        System.out.println("hello modified x value is:"+x);
    }

    void m2()
    {
        System.out.println("hello modified m2 x value is:"+x);
    }

    public static void main(String abc[])
    {   
        demo df=new demo();
        System.out.println("welcome");
        df.m1();
        df.m2();
    }
}

这是我的代码,错误是:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

    at workarea.demo.main(demo.java:24)

错误消息针对提到 main 的代码行 帮我更正这段代码

System.out.println("hello modified x value is:"+ x);

如果您删除此行代码,您的应用将成功 运行

使用对 System.out.println("hello modified x value is:"+ x); 的函数调用导致了问题。

因为您不能在 Class 级别范围内这样做。它应该发生在块或其他方法中。

对于编译时异常,最好使用任何 Java IDE 的 -Eclipse、STS、Netbeans 和 IntelliJ 创建和 运行 程序以进行早期编译检测。 在上面的代码中,打印语句
System.out.println("hello modified x value is:"+ x); 应该在块中或方法中。

初始化程序块可能对您有用。那么你在哪里:

final int x=10;
 ////compile time exception here because ‘x’ is final type
System.out.println("hello modified x value is:"+ x);

改为执行(对字符串消息稍作更改):

final int x=10;
{
    System.out.println("(in initializer block: x value is:"+ x);
}

这是构造函数的替代或补充,因为此代码将用于所有构造函数(如果您要添加任何构造函数)。

https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

您在这里面临的问题是您试图在没有方法或实例初始化器的情况下纯粹在 class 主体中编写语句。在 Java 你不能那样做。 因此,请在方法或实例初始化器中包含以下语句。

System.out.println("hello modified x value is:"+ x);

备选方案1(使用方法):

public void sampleMethod(){

   System.out.println("hello modified x value is:"+ x);

}

备选方案 2(使用实例初始化程序):

{

   System.out.println("hello modified x value is:"+ x);

}