静态变量和成员变量的区别(代码片段)

nyfor2018 nyfor2018     2022-12-22     514

关键词:

 

静态变量和成员变量的不同:

 

① 所属范围不同。静态变量是属于类范围的;成员变量是属于对象范围的。

② 存活时间不同。类的一生有着静态变量的伴随;而成员变量只能陪类走一程,对象产生的时候它就产生,而且它会随着对象的消亡而消亡。

③ 存储位置不同。静态变量时存储在方法区里的静态区;成员变量存储在堆栈内存区。

④ 调用方式不同。静态变量可以通过类名调用,也可以通过对象来调用;成员变量只能通过对象名调用。

 

接下来,就是稍微地理解一下上面说的这些不同啦~

①     所属范围不同

首先给出一小段代码,定义了静态变量和成员变量。

public class StaticTest
    static int num01 = 9;
    public static void main(String[] args)
        int num02 = 10;
    

用javap -p反编译了一下,可以得到:

技术分享图片

 

由此可知,静态变量是随着类的产生而产生的,而且成员变量只有在对象被创建的时候才会产生。

 

② 存活时间不同。

依然使用以上的源码,使用javap -v反编译一下:

技术分享图片

 

由此可知,当num01产生了之后,在main()函数调用结束之后,num01还会保存下来,但是num02就会随着对象的调用而消亡。

 

③ 存储位置不同。

依然是使用以上的源码,也是经过javap -v反编译了一下:

技术分享图片

 

此外我们可以看到,在”Constant pool”(常量池)里面只有num01的踪迹,而没有num02的踪迹。

 

④ 调用方式不同。

重新写一段代码,我们可以看到num01是一个静态变量,而且在test01()方法里面定义了成员变量num02,我们可以看到num01无论在哪里调用都行,但是成员变量只有在对象被调用的时候才会产生。

public class StaticTest
    static int num01 = 9;
    public static void main(String[] args)
        System.out.println("Static Num:"+num01);
        StaticTest st =  new StaticTest();
        num01 = 11;
        st.test01();
    
    public void test01()
        int num02 = 10;
        System.out.println("Static Num:"+num01);
        System.out.println("Member Num:"+num02);
    

结果如下:

技术分享图片

静态变量和成员变量的区别&&成员变量和局部变量的区别

...=======================================================================1)静态变量和成员变量的区别:   (1):所属不同:     静态变量:属于类,也称为类变量。     成员变量:属于对象,也称为对象变量或实例变量。   (2):... 查看详情

成员变量和局部变量,静态变量的区别

成员变量和局部变量,静态变量的区别1.成员变量和局部变量的区别1)在类中的位置不同成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上2)在内存中的位置不同成员变量:在堆内存(成员变量属于对象,对象进堆内... 查看详情

静态变量和成员变量的区别

1.所属不同静态变量属于类,所以也称为类变量;成员变量属于对象,所以也称为实例变量(对象变量)。2.内存中位置不同静态变量存储于方法区的静态区;成员变量存储于堆内存。3.内存出现时间不同静态变量随着类的加载而... 查看详情

局部变量和成员变量的区别(代码片段)

变量的种类根据定义位置的不同,我们给变量起了不同的名字。如下图所示:?在类中的位置不同 成员变量:类中,方法外局部变量:方法中或者方法声明上(形式参数)作用范围不一样 成员变量:类中局部变量:方法中初... 查看详情

类静态成员变量和静态成员函数的访问方式(代码片段)

1、在类所有实例中静态成员变量和静态成员函数都只有一份拷贝2、静态成员函数不能调用非静态成员,非静态成员函数可以调用静态成员3、静态成员变量在使用前要初始化一、静态成员变量的访问classBpublic:staticinta;;intB::a=0;//... 查看详情

java基础--静态方法和实例方法有何不同无参构造函数有什么作用importjava和javax有什么区别成员变量与局部变量的区别有哪些(成员变量有默认赋值)(代码片段)

1.静态方法和实例方法有何不同在外部调用静态方法时,可以使用”类名.方法名”的方式,也可以使用”对象名.方法名”的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。静态方... 查看详情

静态变量和成员变量有什么区别?应该怎么调用?

成员变量从属于对象,是对象的一部分,放在堆中。静态变量是很多对象共享的,放在数据段中。 成员变量是对象特有的,彼此独立,一个对象成员变量值的更改,不会影响别的对象。静态变量是对象共享的,一个对象更改... 查看详情

面向对象的成员与嵌套(代码片段)

成员:一.变量  变量包括:实例变量(字段)和类变量(静态字段),在定义和使用中有区别,本质区别是内存中保存的位置不同.(实例变量保存在对象中,类变量保存在类中.)classProvice:country=‘中国‘#类变量def__init__(self,name):self.name=name#... 查看详情

c++类中的静态成员函数以及静态成员变量(代码片段)

一、静态成员变量静态成员:在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为静态的,称为静态成员。静态成员变量需要在类外分配空间,static成员变量是在初... 查看详情

java中static关键字和代码块的学习(代码片段)

本文介绍了Java中static关键字的使用,即静态成员变量和成员方法以及使用,静态与非静态成员变量和方法的对比总结Java中的代码块介绍与最后结合代码块和构造方法后的初始化代码执行顺序的练习static和代码块的学习三.认识static... 查看详情

静态成员变量和静态成员函数(c++)(代码片段)

静态成员变量通常要在类内声明,类外初始化,编译阶段就会分配内存,所有的对象共享一块内存而且通常用类名去访问,因为他不属于任何一个对象,虽然也可以通过对象去访问静态成员变量,但是其实... 查看详情

javastatic成员变量方法和非static成员变量方法的区别

这里的普通方法和成员变量是指,非静态方法和非静态成员变量首先static是静态的意思,是修饰符,可以被用来修饰变量或者方法。static成员变量有全局变量的作用    非static成员变量则没有全局变量的作用 &nb... 查看详情

成员变量实例变量类变量成员方法实例方法类方法的区别

...p; 2、类变量、类方法就是类中的变量、方法,必须是静态的,要加static;故其又称静态变量、静态方法。3、成员变量、成员方法是对象或实例中的变量、方法,不加static;  类变量:静态域,静态字段, 查看详情

8_对象创建static关键字静态变量和成员变量的区别文档

...享;(4)可以通过类名直接调用。2、注意事项:(1)在静态方法中没有this关键字;(2)静态方法只能访问静态的成员变量和成员方法。  三、静态变量和成员变量的区别1、所属不同  静态变量属于类,所以也称... 查看详情

成员变量和局部变量(代码片段)

1、局部变量和成员变量的区别  1、声明的位置    局部变量:方法体中,形参,代码块中    成员变量:类中方法外         ①、类变量:有static修饰         ②、实例变量:没有static... 查看详情

成员变量实例变量局部变量类变量(静态变量)详解(代码片段)

...量类的方法中的变量。而java类的成员变量又有俩种:静态变量(类变量):独立于方法之外的变量,用static修饰。实例变量:独立于方法之外的变量,不过没有static修饰。在语法定义上的区别:静... 查看详情

静态变量和实例变量的区别(代码片段)

  静态变量用static修饰,实例变量不用。publicclassPersonstaticStringposition;Stringname;  静态变量是随着类的字节码的加载而被加载进内存的,所以只要程序一启动运行到该类时就会被加载进内存,不管创建了多少个对象在内存中... 查看详情

static关键字(代码片段)

...员变量;格式:static数据类型变量名;//demostaticintbrand;静态方法:当static修饰成员方法时,该方法就称之为类方法。静态方法在声明中有static,建议使用类名来调用,而不需要创建类的对象。类方法:使用static关键字修饰的成... 查看详情