当前位置:求职简历网 > 知识 > 正文

静态变量和实例变量的区别

静态变量和实例变量的区别? 静态变量:独立存在的变量,只是位置放在某个类下,可以直接类名加点调用静态变量名使用。并且是项目或程序一启动运行到该类时就直接常驻内存。不需要初始化类再调

静态变量和实例变量的区别?

静态变量:独立存在的变量,只是位置放在某个类下,可以直接类名加点调用静态变量名使用。并且是项目或程序一启动运行到该类时就直接常驻内存。不需要初始化类再调用该变量。用关键字static声明。静态方法也是同样,可以直接调用。实例变量:就是相当于该类的属性,需要先初始化该类,就是new 该类后,才可以调用。但是该类未被再次使用,被垃圾回收器回收后,该实例也将不存在了,就是不在内存中了。区别如下:1.存储区域不同:静态变量存储在静态存储区,普通变量存储在堆中;2.静态变量与类相关,普通变量则与实例相关3.内存分配方式不同。4.生命周期不同。

java静态变量的与实例变量的区别

java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种没有static修饰,为实例变量。1、在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。2、在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。举例说明:对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar 就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。结果为:10 (成员变量具有缺省值 而局部变量则没有)把代码改为:结果则为:010

静态变量与实例变量的理解

(静态变量又称类变量,静态方法又称类方法)。

静态变量和实例变量的区别?

1、静态变量用static 关键字修饰,实例变量不需要。

2、静态变量,属于类所有,只要程序加载了,静态变量就会被分配空间,就可以直接使用。

实例变量是对象的属性,只有实例化对象之后,才会被分配空间,才能使用。(即需要new一个才能使用)

3、类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;

而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;

例子:

public class StaticClass {

static int i=5;//静态变量

int j=5;//实例变量

public static void main(String[] args) {

System.out.println(StaticClass.i);//可以直接引用 i

StaticClass sc=new StaticClass();//必须实例化之后,才能引用 j

System.out.println(sc.j);

}

}


java中静态变量和实例变量的生命周期有什么区别?

1.存储区域不同:静态变量存储在静态存储区,普通变量存储在堆中;\x0d\x0a2.静态变量与类相关,普通变量则与实例相关,说细一点:\x0d\x0aclass Demo {\x0d\x0apublic static String a;\x0d\x0apublic String b;\x0d\x0apublic static void main(String[] args) {\x0d\x0a Demo d = new Demo();\x0d\x0a d.a; // 警告,虽然可以通过编译,但没有意义\x0d\x0a d.b; // 正确\x0d\x0a Demo.a; // 对static变量的正确引用\x0d\x0a Demo.b; // 错误\x0d\x0a}\x0d\x0a3.内存分配方式不同。static字段对每个类来说都只有一份,无论你创建多少对象,该static区域都只有一份,它对于这些对象来说是共享的;而非static字段,因为其从属于对象,因此每有一个对象,就会为该变量申请一个存储空间;\x0d\x0a4.生命周期不同。从程序运行开始,static域就已经确定下来,因此在没有创建对象之前,就可以引用该区域变量及函数,而非static域的变量及函数,必须等实例化之后才可以通过对象来调用。\x0d\x0a5.理解了this之后,更能体会到static的含义。static方法就是没有this的方法,这也就是为什么在static方法中不能引用非static变量,因为该方法内没有隐含的this,编译器无从知道这个变量是属于哪一个类的。


知识相关

知识推荐

求职简历网为你分享个人简历、求职简历、简历模板、简历范文等求职简历知识。

Copyrights 2018-2024 求职简历网 All rights reserved.