当前位置:首页 > 自我学习 > 正文内容

java静态变量和实例变量区别(静态变量与实例变量)

2023-06-03 21:54:05自我学习1

静态变量与实例变量

final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。

  static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念

final 和 staic 区别

成员变量 (能否修改值)

  final

    final成员变量表示常量,只能被赋值一次,赋值后不能再被改变

  staic

    被static修饰的成员变量独立于该类的任何对象, static 修饰的变量可以被赋值多次

静态变量和实例变量

局部变量与其它三个有本质区别。 局部变量,定义在函数内,作用域为定义位置,到所在大括号结束。 每次执行到定义语句的时候,系统为该变量分配内存,当作用域结束后,内存被释放。 而另外三个,都是在系统运行时就分配内存,在运行过程中都不会释放,直到程序结束。 也就是说,局部变量和其它三个,最明显的区别:

1 生命周期不同

2 分配时间不同

3 分配位置不同。 而另外三个,在这几项上是相同的,之间的区别在于作用域。 全局变量,作用域为整个项目,不管在哪个文件中,只要声明后都可以使用。 静态全局变量,作用域为定义改变量的所在文件。 而静态局部变量,作用域与普通局部变量一样,都是定义位置到所在大括号结束

静态和实例变量的区别

1、静态方法:需要在项目启动的时候就初始化,在不创建对象的情况下,这种代码是被动执行的(静态方法在类加载的时候 就已经加载 可以用类名直接调用) 使用类的静态方法时,注意: a、在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员(这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象) b、 静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所引用的对象根本没有产生。 c、静态变量是属于整个类的变量而不是属于某个对象的。注意不能把任何方法体内的变量声明为静态

2、静态代码块:有些代码必须在项目启动的时候就执行,这种代码是主动执行的(当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化)

3、区别:两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的.

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

一、形式不同:

静态变量是在定义的时候,有static 修饰的变量,形式为static TYPE var_name = init_value;

动态变量,形式为TYPE var_name = init_value;即没有static 修饰,其中的=init_value均可省略。

二、作用不同:

动态全局变量:作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量,生命周期为从程序运行到程序退出,即贯穿整个运行时间。

静态全局变量:作用域为当前文件,从定义/声明位置到文件结尾,生命周期为从程序运行到程序退出,即贯穿整个运行时间。

静态变量和实例变量的含义

局部变量是指,在一个作用域中才有效出了作用域就销毁的变量。如,在函数里面,在for循环里,{}里声明的。

实例变量就是一个全局变量,可以在类里的所有非静态成员里访问,必须声明在类里函数外面。

你所说的类变量可能就是指静态变量吧,静态变量和成员变量声明在同一个地方,但它声明要加static。

静态变量可以在不实例化类的情况下(根据权限)访问。如果是公共的,在任何地方,随时都可以访问这个变量。

静态变量永远只存在一份,而实例变量,有多少个实例,则存在多少个副本。

静态变量与实例变量怎么区分

(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。  (2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。    (3)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。根据静态局部变量的特点,可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用(尤其是短名全局变量的变量名污染很严重),因此仍以采用局部静态变量为宜。简单的说静态局部变量与全局变量最明显的区别就在于:全局变量在其定义后所有函数都能用,但是静态局部变量只能在一个函数里面用。

静态变量与实例变量、静态方法与实例方法有什么区别?

静态变量和实例变量的区别(配图解释专业术语,通俗易懂)

1:首先在语法定义上区别:静态变量前面要加static,实例变量不用

 

2:在程序运行时:

  实例变量输入对象的属性,必须创建了实例对象(如 new)才会被分配空间,才可以使用实例变量,静态变量不属于某个实例对象,而是属于类,也叫类变量,只要程序加载了类的字节码,不用创建任何实例对象就会被分配空间,就可以被使用

3:总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

注意:(static)静态变量的使用也是有局限性的,一个静态方法中不能调用类中的非静态的方法和变量,static修饰的变量在类加载后在内存中只有一份内存空间,可以被一个类的所有实例对象所共享。

静态变量和实例变量的区别是什么

临时变量和静态变量是编程中常用的两种变量类型,它们的区别在以下方面:

临时变量(局部变量)

在函数内部创建,只能在函数内部访问,函数执行完成后被自动销毁。

每次函数调用时都会重新初始化,即每次函数执行时都会分配新的内存空间。

存储在栈内存中,空间较小。

示例代码:

c

复制代码

void foo() {

    int a = 10; // a 是一个临时变量

    printf("%d", a);

}

静态变量

在程序运行期间存在,不会因为函数执行完毕而销毁,直到程序结束才会被销毁。

只能在定义它的函数内访问,但可以通过函数提供的接口(如返回值或指针参数)传递给其他函数使用。

每次函数调用时都不会重新初始化,即每次函数执行时都会使用同一块内存空间,并保留上一次执行的值。

存储在静态存储区中,空间较大。

示例代码:

c

复制代码

void foo() {

    static int a = 10; // a 是一个静态变量

    printf("%d", a);

    a++;

}

在第一次执行 foo() 函数时,输出结果为 10。在第二次执行 foo() 函数时,输出结果为 11。这是因为 a 是一个静态变量,它的值会被保留下来,并在下一次执行时继续使用。

静态变量实例变量的区别

静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。

静态变量虽在程序的整个执行过程中始终存在,但是在它作用域之外不能使用。

静态变量和实例变量有何区别

了解变量的关键在于“存在范围”和“作用域”两个概念。

“存在范围”指存储变量的内存空间在什么时间段内存在。全局变量和静态变量都是在程序运行之始就产生,运行结束才销毁,是一样的。

“作用域”指变量在什么时间段内可见,即可以被识别。全局变量的作用域是整个程序运行过程,静态变量的作用域是声名该变量的局部函数内。在总程序内和这个函数外,静态变量虽然存在,但写下变量名时编译器却不认识,这是区别。

关键在于了解存在和可见的区别。

静态变量与实例变量的关系

具体是酱紫的局部静态跟全局静态内存中性质一样,文件里都在数据段。唯一区别局部静态变量有作用域限制,是靠编译器帮忙语法检测。

局部静态变量有个初始化问题,当多次调用一个含有局部静态变量的函数时候,怎么保持之初始化一次。程序会在内存中第一个bit位,来标识是否初始化过。所以答案是,该局部静态变量跟全局变量一样很早就存在于全局数据区。但当第一次运行到该函数,会检测一个位,来判断是否已经初始化。参考书籍,c++反汇编与逆向分析技术揭秘

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/98877950.html