2016-10-22 134 views
0

t1静态还是非静态?是t1静态还是非静态?

class Test { 
    void display() { 
     System.out.println("hello"); 
    } 

    public static void main(String a[]) { 
     Test t1 = new Test(); //object created 
     t1.display(); 
    } 
} 
+0

你觉得呢?什么使静态的东西? – assylias

+0

[Java'static'](https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) - 了解类成员 – nbrooks

+0

static关键字。 –

回答

0

t1是局部变量并且由于它们居住的方法的范围内,同时一个静态变量/场独立地方法执行的存在局部变量不是一成不变的。


静态变量/字段必须在方法外部声明。

-1

它本身并不是静态的,尽管它仅存在于静态上下文中。 static描述符只适用于类级实体。考虑这个类(的简化版本,内置的java.lang.Math类):

class EasyMath { 
    public static final double PI = 3.17; 

    public static int quadruple(int i) { 
     int num = i * 4; 
     return num; 
    } 
} 

您将引用的PI值直接,使用EasyMath.PI。这是一个类变量。它直接属于EasyMath类,而不属于类的实例。

同样,您也可以参考该课程的quadruple方法:EasyMath.quadruple(6)。这是因为该方法是静态的,它直接属于类。

请注意,quadruple方法定义了一个名为num的局部变量。但是,您无法参考使用EasyMath.num。它不属于这个班级。

它的本地范围在静态quadruple方法中,所以只能在该方法中使用,并且无法在其他位置使用。另一个静态方法将无法看到它或引用它。同样,如果有任何实例方法,他们也将无法看到它。局部变量永远不会是静态的。

+0

它只存在于方法本地上下文中。 – EJP

+0

@EJP上下文仍然是静态的,它只是本地变量的作用域。例如,如果您尝试从该方法中访问实例变量,则Java会抱怨从* static上下文*访问非静态变量。在main方法中,上下文是静态的。 – nbrooks

相关问题