javase(静态变量和实例变量的区别)

1、语法定义上的区别:

静态变量:需要加static关键字

实例变量:不需要加static关键字修饰

2、程序运行时的区别:

静态变量:静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量可以直接用类名调用。

实例变量:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。

例如:

在StaticDemo类中定义一个static类型的成员变量:

public class StaticDemo {
public static int a=1;
}

创建测试类:

复制代码
public class Test {
    public static void main(String[] args) {
        StaticDemo ad1 = new StaticDemo();
        ad1.a = 100;
        System.out.println(ad1.a);
        StaticDemo ad2 = new StaticDemo();
        System.out.println(ad2.a);

    }

}
复制代码

两次输出的值都为100,改变一个对象的值,另外一个对象的值也跟着改变。

静态变量是被static修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。静态变量可以实现让多个对象共享内存。

3、静态不能访问非静态变量和方法(类的非静态成员不存在的时候,静态成员已经存在了)

4、static关键字的好处

(1)不用创建对象,也能使用类中的属性和方法;

(2)效率高;不用多次占用内存。

原文地址:https://www.cnblogs.com/zhai1997/p/12404496.html