【发布时间】:2018-02-11 11:24:34
【问题描述】:
我的编译器在声明 String 变量时显示错误,但提示显示 final 缺失。改正后成功了,但是final有什么用呢?
class Outerclass
{
private static String upa = "tobby";
static class A
{
void printmessage(){
System.out.println("who is a good boy?"+upa);
}
}
class B
{
void printagain()
{
System.out.println("who is a bad boy?"+upa);
}
}
}
public class Main {
public static void main(String[] args) {
Outerclass.A oa=new Outerclass.A();
oa.printmessage();
Outerclass outer= new Outerclass();
outerclass.B ob= outer.new B();
ob.printagain();
}
}
【问题讨论】:
-
我在任何地方都看不到决赛?
-
final表示该变量在类初始化后保证可见,并且您不能意外(或故意)重新分配它。它不是必需的(没有它你不会得到错误),但最好将你视为常量的东西实际上是常量。 -
除了它是
String而不是string,您的代码运行良好并且没有final。 -
这段代码应该没有问题,除非您在内部创建匿名类时访问该字符串。也是字符串不是字符串。
-
请遵守命名约定(类名以大写开头)(outerclass,a,b),因为如果满足假设,它会使代码的阅读更容易。我希望您的意思是字符串,而不是字符串 - 否则您必须更正该行。