您的位置:

java静态变量有哪些特点,java静态变量有什么用

本文目录一览:

java中静态变量和静态方法的优缺点

java静态变量和静态方法会在程序初始化运行时候就加载到内存。

优点:不需要在进行实例化。静态变量的值,直接赋新值即可,不需要参数传递,之后可以直接进行参数引用即可;静态方法可以直接通过"类名.方法"的形式进行方法调用。通常方法被多次调用,并且方法中没有动态方法引用的时候使用比较方便。

缺点:初始化加载到内存,如果后续没被引用,加大了内存负担和程序运行负担,影响程序运行效率(一般很小),并且静态变量如果多处被引用赋值,很可能导致参数值混乱(如果是不变的值,最后加上final修饰,强制不能修改)。

备注:上面的都是理论知识,实际开发中,根据实际项目需求进行灵活调整即可。

java中静态变量和静态方法分别有什么特点?深圳

静态变量,是一但java虚拟机载入java代码时就被负初值的,并且只负一次值,是多个对象共有的值。 静态方法最点型的就是main方法 main方法是为了让程序找到入口,因为静态是最先被编译的,静态方法可以用 类名。方法名 直接调用。

静态变量的变量特点

静态局部变量属于静态存储方式,它具有以下特点:

(1)静态局部变量在函数内定义,但不像自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。

(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。

(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋值。数值型变量自动赋初值0,字符型变量赋空字符。

(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。 给读者一个简单直白的例子(区别静态局部变量和动态局部变量): #includestdio.hint fun(int n){    static int f=1;    f=f*n;    return f;}void main(){    int i;    for(i=1;i=5;i++)    printf(fun(%d)=%d\n,i,fun(i));}这里的运行结果是: fun(1)=1fun(2)=2fun(3)=6fun(4)=24fun(5)=120说明f在加了static的类型限制之后,就相当于全局变量,函数调用完了之后,修改过的f的值仍然是有效的(即这个程序相当于求i的阶乘了)。而如果不加static的类型限制,那么,会是什么结果呢,我们看下面的代码: #includestdio.hint fun(int n){    int f=1;    f = f * n;    return f;}void main(){    int i;    for(i=1;i=5;i++)        printf(fun(%d)=%d\n,i,fun(i));}程序的运行结果是: fun(1)=1fun(2)=2fun(3)=3fun(4)=4fun(5)=5也就是说,这时函数fun中的变量f的生命周期就仅限于fun函数的范围内了,在main中每次传入新的参数i,f就会计算1*i的值并返回,而不会像之前那样不断的累乘了。

———————————————————————————————————————————————

下面是java例子: public class StaticTest{    static int f=1;//java声明静态变量要放到函数外面,结果和c的结果一样    int fun(int n){        f = f * n;        return f;    }    public static void main(String[] args){        StaticTest st = new StaticTest();        for(int i = 1; i = 5; i++)            System.out.println(st.fun(i));    }}---------------------------------------------------------------------------------------------------------------

Module Module1

Public a As Integer ‘未赋值的情况下a的值是0

End Module

Public Class Form1

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

a += 1

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

a += 1

MsgBox(a) ’结果是2(0+1+1)因为是a是模块级静态全局变量,所以按按钮3以后,直到关闭程序a的值都会是2

End Sub

End Class

java中静态变量和静态方法分别有什么特点?

静态变量

可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象。

静态变量有两种情况:

静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例就可以直接使用

静态变量是一个引用。这种情况比较特殊,主要问题是由于静态变量是一个对象的引用,那么必须初始化这个对象之后才能将引用指向它。因此如果要把一个引用定义成static的,就必须在定义的时候就对其对象进行初始化。

静态方法

与类变量不同,方法(静态方法与实例方法)在内存中只有一份,无论该类有多少个实例,都共用一个方法。

静态方法与实例方法的不同主要有:

静态方法可以直接使用,而实例方法必须在类实例化之后通过对象来调用。

在外部调用静态方法时,可以使用“类名.方法名”或者“对象名.方法名”的形式。实例方法只能使用后面这种方式。

静态方法只允许访问静态成员。而实例方法中可以访问静态成员和实例成员。

静态方法中不能使用this(因为this是与实例相关的)。

java的静态类型有什么特点

静态属性:随着类的加载而加载,该属性不属于某个对象,属于整个类

静态方法:直接使用类名调用,静态方法里不能访问非静态成员变量

静态类:不能直接创建对象,不可被继承