Java 中的静态变量和实例变量的区别在于,静态变量属于类,只有一份,而实例变量属于对象,每个对象都有一份。因为静态变量只有一份,所以多个对象共享同一个静态变量,如果一个对象改变了这个静态变量的值,那么其他对象也会受到影响。而实例变量是每个对象独有的,它的值在不同对象之间是独立的,一个对象修改实例变量的值,不会影响其他对象的实例变量值。在访问静态变量时,可以直接通过类名访问,而在访问实例变量时,必须通过对象引用来访问。此外,静态变量在类加载时就被初始化,而实例变量在创建对象时被初始化。
public class Run {
public static Integer VALUE = 0;
public Integer LOCAl_VALUE = 0;
public static void main(String[] str) {
//演示用,多线程会存在并发问题
Run.VALUE++;
Run.VALUE++;
Run.VALUE++;
System.out.println("静态变量值" + Run.VALUE);
//print 3 一个修改其它也会受到影响
Run run = new Run();
run.LOCAl_VALUE++;
System.out.println("run成员变量值" + run.LOCAl_VALUE);
//print 1 单独访问自己的成员变量,修改也仅对自己有效不影响其它对象
Run run2 = new Run();
run2.LOCAl_VALUE++;
System.out.println("run1成员变量值" + run.LOCAl_VALUE);
//print 1 单独访问自己的成员变量,修改也仅对自己有效不影响其它对象
}
public Integer getLOCAl_VALUE() {
return LOCAl_VALUE;
}
public void setLOCAl_VALUE(Integer LOCAl_VALUE) {
this.LOCAl_VALUE = LOCAl_VALUE;
}
在 Java 中,实例变量是指定义在类中的变量,也叫成员变量或属性。实例变量属于对象,每个对象都有一份,因此也称为对象变量。实例变量定义在类中,方法体外,可以通过对象引用来访问。实例变量的值对于每个对象都是独立的,一个对象修改实例变量的值,不会影响其他对象的实例变量值。
实例变量在创建对象时被初始化,如果没有显式初始化,则会使用默认值。数值类型的默认值为 0,布尔类型的默认值为 false,引用类型的默认值为 null。如果希望在定义实例变量时进行初始化,可以使用赋值语句或者构造方法进行初始化。如果希望在定义实例变量时进行初始化,可以使用赋值语句或者构造方法进行初始化。例如:
public class MyClass {
// 定义实例变量x和y,它们的默认值为0
int x;
int y;
// 定义带参数的构造方法,用于初始化x和y
public MyClass(int x, int y) {
this.x = x;
this.y = y;
}
}
在上面的例子中,定义了两个实例变量 x 和 y,它们的默认值为 0。同时定义了一个带参数的构造方法,用于初始化 x 和 y 的值。在创建 MyClass 对象时,可以调用这个构造方法来初始化 x 和 y。例如:
MyClass obj = new MyClass(10, 20);
这样,obj 对象的 x 和 y 分别被初始化为 10 和 20。