静态和即时方法的范围,以及java中的静态或实例变量是什么?如果他们在同一个班级或其他班级。
答案 0 :(得分:1)
静态和即时方法的范围,以及java中的静态或即时字段的范围是什么?
static
成员的范围是它所在的类。
没有什么"瞬间"在电脑里,一切都需要时间。
实例变量也具有该类的范围。注意:您只能访问实例上的实例变量。
静态方法是否只能调用同一个类中的静态成员?
静态方法可以调用静态或其他任何方法。如果它调用实例方法,它必须提供实例,它正在调用该方法。
注意:实例方法也只能在方法上调用实例方法。不同的是;如果您没有指定实例,Java会假设您使用this
,但对于static
方法,则不能使用this
。
答案 1 :(得分:1)
静态方法,变量和初始化代码具有以下特征。
They’re associated with a class.
They’re initialized only when a class is loaded.
实例方法,成员变量具有这些特征。
They’re associated with a particular object.
They’re created with every object instantiated from the class in which they’re declared.
答案 2 :(得分:1)
我想用一个例子回答你的问题。希望它会给你更好的清晰度。
<强> StaticExample.java 强>
public class StaticExample {
public static int Static_var= 0 ;
public int instance_var = 0 ;
public static void changeValStatic(){
Static_var ++; // Accessing static variable from static method.
// instance_var++; --> Error because it is not possible to access instance variables in static methods
changeVal2Static(); // Calling static method of the same class.
// display(); --> Error because it is not possible to access non static (instance) methods in static methods.
}
public static void changeVal2Static(){
System.out.println("Call to second static method");
}
public void changeValInstance(){
Static_var ++; // Access to static variable from instance method
instance_var++; // Access to instance variable from instance method
}
public void display(){
//Printing instance and static variable
System.out.println("Instance variable :- " + this.instance_var);
System.out.println("Static variable :- " + Static_var );
}
}
<强> StaticExampleTest.java 强>
public class StaticExampleTest {
public static void main(String[] args) {
StaticExample se = new StaticExample();// Create an instance of StaticExample class
se.changeValInstance(); //call the instance method using "se" instance of StaticExample class
//se.changeValStatic(); Not error but Invalid because Static methods are class methods , should be called using class name
StaticExample.changeValStatic(); // Valid Call to static method
se.display(); //Call to instance method.
}
}