Java - 静态方法中的局部变量

时间:2014-11-18 09:54:10

标签: java static

由于内部静态方法我们:

  
      
  1. 无法对非静态字段进行静态引用
  2.   
  1. 然后静态方法中的局部变量应该 静态 as 好。
  2. 但根据这里的答案:Are local variables in static methods also static?

      
        
    1. 静态方法中的局部变量只是静态方法中的局部变量。他们不是静态的,并且他们在任何方面都不是特别的。
    2.   

    我的演绎(2)和Ernests答案(3)中的陈述之间存在冲突,我无法解释。

    有人可以解释我的演绎是否错误,为什么会这样? 如果我没有错,问题的正确答案是什么?#34;静态方法中的局部变量也是静态的" ?

    编辑:局部变量成员变量(字段)感到困惑a 静态是。

    我只是想到:
    IF "static methods cannot make reference to non static field" AND "fields are variables" 然后 "variables in static methods are also static"
    用静态方法制作变量两者本地&&静态

    谢谢。

4 个答案:

答案 0 :(得分:5)

A field cannot be referred by a static method因为它属于 实例 ,因此它不在静态方法的中范围

局部变量永远不会是静态的。通过“局部”变量,可以理解在代码块中声明和使用的变量,无论该代码块是静态初始化器,类初始化器还是方法/构造器体。这些变量的范围当然是由声明它们的代码块决定的。

不要与类(字段)中声明的变量混合,无论它们是实例变量(非静态;每个实例一个)还是类变量(静态;每个类一个)。

答案 1 :(得分:1)

局部变量不是字段。

答案 2 :(得分:1)

  1. 在方法内声明的变量存在于堆栈中。这些被称为本地变量
  2. 在类中声明为static的变量。这些被称为 Class 变量。 (虽然它们通常被称为静态变量)
  3. 在类中声明为非静态的变量存在于特定实例中。这些被称为实例变量。
  4. 基本上每次输入静态或非静态方法时,都会为您在该块中声明的每个变量保留内存。退出块时释放该存储器。 (退出方法或退出{}块。局部变量的生命周期始终是您声明它们的块。

答案 3 :(得分:0)

您的异常中的简单冲突是您希望局部变量是一个字段。哪个不是真的。

一个局部变量就在一个方法中。如果这种方法是私有的,公共的,静态的,最终的或其他任何东西都无关紧要。

当一个字段与Object实例一起使用时。

静态领域与全班同居。