实例变量和静态变量的区别:
java类的成员变量有两种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种没有static修饰,为实例变量。
1.语法格式不同:
静态变量前面需要加上static
实例变量前面不加static
2.程序运行不同:
静态变量不属于某个实例对象,而是属于类,所以也叫类变量,只要程序加载了类的字节码,就比如我有一个Demo类,编译之后生成的class文件就是字节码文件,只要我在dos里面执行了java Demo,这个Demo类就被加载了,此时,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。
实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。
3.存在位置不同:
静态变量随着类的加载而存在于方法区中,被所有的对象共享.
实例变量随着对象的建立而存在于堆内存中,每创建一个实例,JVM就会为实例变量分配一次内存.
2.生命周期不同,
静态变量可以由类名直接访问,是随着类的加载而加载,类存在,静态变量就存在,否则静态变量就不存在.所以静态变量生命周期最长.
实例变量随着对象消失而消失,对象在,实例变量就在,否则就不在. |