在接口中声明常量和在java类中声明常量有什么区别
1)代码下面的两个静态变量之间的区别是什么
Class A{
public static final String X = "XYZ";
}
interface A{
String X = "XYZ";
}
2)如果两个静态变量声明相同,那么哪一个是有效的
即
Class A{
public static final String X = "XYZ";
void print(){
System.Out.Println(X);
}
}
或
interface B {
String X = "XYZ";
}
Class A implements B{
void print(){
System.Out.Println(X);
}
}
# 1 楼答案
特殊性是,接口中定义的所有变量都是},没有特别说明
public
{# 2 楼答案
a.枚举
b、 接口
c、 课程
我记得在《有效Java》一书中简要讨论了这个问题
# 3 楼答案
# 4 楼答案
两个字段之间没有区别。从section 9.3 of the JLS:
性能没有差别,因为在这两种情况下,编译器无论如何都会“内联”字段值:在执行时,它无论如何都不会访问字段。这只是因为您使用的是
String
;如果该字段不是基元类型或String
类型,则代码将访问该字段。。。但我不认为这会对性能产生显著的影响,你也不必担心。编写最清晰的代码# 5 楼答案
1)两个常数的含义相同。默认情况下,接口中声明的字段是
public static final
2)不应首选接口中的字段。(除非您非常确信另一个接口不会有同名字段)
3)效率不受放置常数的位置影响;在类中或在接口中