黑马程序员技术交流社区

标题: 静态变量和实例变量的区别? [打印本页]

作者: 夏一站    时间: 2013-6-10 01:57
标题: 静态变量和实例变量的区别?
本帖最后由 夏一站 于 2013-6-12 20:33 编辑

什么时候用静态变量?
什么时候用实例变量?
是否可以同时出现?
作者: 逝者轨迹    时间: 2013-6-10 09:18
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。
实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

作者: liujkh123    时间: 2013-6-10 09:19
静态变量属于一个类的
实例变量属于一个类对象的
如果一类事物,不论有多少个,都有一样的属性或者方法,那就用静态变量和方法。比方说1000个包子给一堆人吃,就可以把包子个数定义成人这个类的静态属性,你随便弄多少个人出来吃包子,都只会共用这1000个包子,吃完就没了。
作者: shiweiCao    时间: 2013-6-10 12:56
“局部变量、成员变量”我称为非静态成员变量。
“全局变量”称为静态成员变量。
非静态成员变量是在定义后,电脑随机给一个地址,当程序运行结束时,地址收回。而静态成员变量的不收回,而且一但给了地址它,这个地址就是它的了,不管程序结不结束。它在等待有个语句来释放它。或者关了电脑也就没了。
“Java中的变量分为局部变量(定义在方法内的非静态变量),成员变量(定义在类级别的非静态变量),全局变量(定义在类级别的静态变量)?”是可以这么说的。


最好用的应该是(全局变量)静态变量,因为定义为静态了,就直接类名点成员名(如你在类string定义static int number,那你可以直接string.number就行了,但会占内存直到程序结束)。第二好用的是成员变量了,定义了之后,在整个类里都可以用。相对局部变量就只能在大括号定义大括号里用。
作者: 张俊生    时间: 2013-6-10 13:54
实例变量和类变量的区别:

             1、存放位置。

                     类变量随着类的加载而存在于方法区中。

                     实例变量随着对象的建立而存在于堆内存中。

               2、生命周期:

                     类变量生命周期最长,随着类的消失而消失。

                     实例变量生命周期随着对象的消失而消失。
他们能同时出现在编程里,但在运行时就有先后的。
作者: 袁梦希    时间: 2013-6-12 19:06
shiweiCao 发表于 2013-6-10 12:56
“局部变量、成员变量”我称为非静态成员变量。
“全局变量”称为静态成员变量。
非静态成员变量是在定义 ...

加油  哈哈  云四就咱们几个骨干
作者: 袁梦希    时间: 2013-6-12 19:06
楼主你好  如果问题已经解决  请把帖子的类型改为已解决  然后会给你发几个粽子吃
作者: shiweiCao    时间: 2013-6-14 01:55
袁梦希 发表于 2013-6-12 19:06
加油  哈哈  云四就咱们几个骨干

哎,明天交了试题就准备面试.  没想到我这么脸厚的也会紧张




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2