在接口和类java中声明常量之间有什么区别

bla*_*deX 4 java

1)代码下面的两个静态变量有什么区别.

Class A{
public static final String  X = "XYZ";
}


interface A{
String X = "XYZ";
}
Run Code Online (Sandbox Code Playgroud)

2)如果两个静态变量声明都相同,那么哪个是有效的.

Class A{
public static final String  X = "XYZ";

void print(){
System.Out.Println(X);
}
}
Run Code Online (Sandbox Code Playgroud)

要么

interface B {
String X = "XYZ";
}


 Class A implements B{

    void print(){
    System.Out.Println(X);
    }
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

  1. 字段之间没有区别.从JLS第9.3节开始:

    接口主体中的每个字段声明都是隐式的public,static和final.允许为这些字段冗余地指定任何或所有这些修饰符.

  2. 性能没有区别,因为在这两种情况下,编译器都会"内联"字段值:在执行时,它无论如何都不会访问字段.这只是因为你正在使用的情况String; 如果字段是原始类型以外的类型,或者String代码访问该字段...但我不希望这会对性能产生显着影响,您不应该担心它.写下最清晰的代码.