在java

时间:2016-03-21 15:33:22

标签: 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();
    }

}

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

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

5 个答案:

答案 0 :(得分:6)

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

使用其中一个肯定没有“规则”。使用哪个使您的代码更具可读性,但要注意冲突的变量名称。 Eclipse和其他IDE可以设置为warn you when you do so,这非常有用。

答案 1 :(得分:2)

当你想要确保从类中调用Route::get('sitemap', function(){ // create new sitemap object $sitemap = App::make("sitemap"); // set cache key (string), duration in minutes (Carbon|Datetime|int), turn on/off (boolean) $sitemap->setCache('laravel.sitemap', 60); $posts = DB::table('posts')->orderBy('created_at', 'desc')->get(); foreach ($posts as $post) { $sitemap->add($post->slug, $post->modified, $post->priority, $post->freq); } 变量或者想要从另一个类引用它时(如果它不是{{1}),你会更喜欢Test.myVariable最好是static

private

答案 2 :(得分:1)

如果你在那个班级,没有区别。 myVariableTest.myVariable都指向同一个对象。

如果您从其他班级致电myVariable,则必须使用Test.myVariable语法来引用正确的对象。

答案 3 :(得分:0)

没有区别。但是应始终使用Test.myVariable因为它直接表明它是读取代码的人的静态变量,否则会导致难以发现的错误。

答案 4 :(得分:0)

对于第一个,您直接打印myVariable。对于第二个,您从Test类打印myVariable。您指的是同一个实体。随着程序变大,我建议使用Test.myVariable以避免混淆。但是,从技术上讲,它是选择你想要呈现这个静态变量的方式。有时候,将静态变量表示为myVariable可能更有意义。只是保持一致。他们允许这两种方法是有原因的:)。