百科狗-知识改变命运!
--

JAVA 简述static成员变量与非static成员变量的主要区别是什么?

泡在奶味里11个月前 (12-05)阅读数 4#综合百科
文章标签静态变量

static是为了将某个成员变量/方法关联到类(class)而非实例(instance)。 \x0d\x0d\你不需要创建一个对象就可以直接使用这个类的static成员, \x0d\x0d\在A类中调用B类的static成员可以使用B.staticMember的写法。 \x0d\x0d\注意一个类的static成员变量是唯一的,被所有该类对象所共享的。\x0d\x0d\比如说有一个类Dog;\x0d\ 属性:clolor,狗狗可以有好多颜色;\x0d\ munberOfLegs =4 每只狗狗只有4条腿,这个就应该是静态的;\x0d\x0d\静态的属性不依赖于类的存在而存在,简单说,你可以定义\x0d\Dog dog1 = new Dog();\x0d\Dog dog2 = new Dog();\x0d\Dog dog3 = new Dog();\x0d\这里定义了三条狗狗,狗狗的颜色依赖于类本身,即dog1,dog2,dog3;三条狗狗可以有不同的颜色;\x0d\而狗狗的腿的数量不依赖于dog1,dog2,dog3;所有的狗狗都是4条腿

“public static”和“public”有什么区别?

静态变量与静态函数2007-04-09 22:15 在函数或者变量前面加上static修饰符号,以便把函数或者变量在类内或者文件范围内共享,那么我们把这种函数和变量叫静态函数和静态变量。说白了,静态变量的生存期是整个程序,然而其作用域没什么变化,与动态变量的作用域是一样的,虽然静态变量在作用域外存在,但不可调用;它可以保证下次调用该函数时值保持不变,不会再次被初始化。

首先介绍静态成员函数和静态成员变量,他们是用来记录类的信息而不是对象的信息,创建对象时不会创建该变量的空间。二者既可以由对象调用又可以通过类来调用。具体而言又有如下特征:

1) 静态变量受public,protected ,private限制,这同普通变量一样,也就是如果静态变量是protected或者private类型的,在类外不能访问,比如

A::i是错误的

这条规则同样适用于静态函数

2) 静态变量在类内声明,而必须在类外初始化,模版类中应用也是这样。这里我们在static后面加上const类型,可以直接初始化。比如

Class A

{

JAVA 简述static成员变量与非static成员变量的主要区别是什么?

// Static int I = 5; // error

Static const int I = 5; // ok

Int m_list[I];

}

而这里I的应用也无非是Int m_list[I];

3) 静态成员函数没有this指针。因此,不能声明为const函数。另外,成员数据变量在成员函数内是通过this指针来访问的,因此静态成员函数不能访问任何非静态成员变量。

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

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

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

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

4) 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

例题如下:

main()

{

int i;

void f(); /*函数说明*/

for(i=1;i

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)