这两种方法在java中调用静态变量的区别

mak*_*ork 0 java

如果我有这个示例代码:

public class Test{

static String myVariable = "hi";

public Test(){
    System.out.println(myVariable);
    System.out.println(Test.myVariable);
}

public static void main(String[] args) throws SQLException{
        new Test();
    }

}
Run Code Online (Sandbox Code Playgroud)

现在两者都会打印"hi",但我想知道它们的区别是什么,何时我应该使用另一个,或者我应该总是只使用其中一个,因为它是常态.

对于这个非常基本的例子我很抱歉,但是当我让系统工作时,我并没有真正理解两者之间的区别

dim*_*414 6

它们都引用相同的变量,因此原则上它们是相同的.然而,在实践中,第一选择存在与局部变量冲突的风险; 例如添加String myVariable = "bye";你的第一个前println()将输出bye之后hi.

使用其中一个肯定没有"规则".使用哪个使您的代码更具可读性,但要注意冲突的变量名称.Eclipse和其他IDE可以设置为在您执行此操作时发出警告,这非常有用.