A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夏一站 中级黑马   /  2013-6-10 01:57  /  1956 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夏一站 于 2013-6-12 20:33 编辑

什么时候用静态变量?
什么时候用实例变量?
是否可以同时出现?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

9 个回复

倒序浏览
  类变量和实例变量的区别在于:
类变量是所有对象共有,其中一个对象将它值改变,
其他对象得到的就是改变后的结果;
而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;
  1. public class A{
  2.     static  int a = 0; //类变量
  3.     private int b = 0; //实力变量
  4. }

  5. public class B{
  6.     public void main (String[] args){
  7.         A a1 = new A();
  8.         A a2 = new A();
  9.         a1.a = 3;  // 等同于 A.a = 3;
  10.         a1.b = 4 ;
  11.         System.out.println(a2.a); //结果为3
  12.         //类变量是针对所有对象的,所以a1改变a,a2的a也改变
  13.         System.out.println(a2.b); //结果为0
  14.         //实例只改变自身的,所以a1对象的b改变,不影响对象a2的b变量
  15.     }
  16. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

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

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
静态变量属于一个类的
实例变量属于一个类对象的
如果一类事物,不论有多少个,都有一样的属性或者方法,那就用静态变量和方法。比方说1000个包子给一堆人吃,就可以把包子个数定义成人这个类的静态属性,你随便弄多少个人出来吃包子,都只会共用这1000个包子,吃完就没了。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
“局部变量、成员变量”我称为非静态成员变量。
“全局变量”称为静态成员变量。
非静态成员变量是在定义后,电脑随机给一个地址,当程序运行结束时,地址收回。而静态成员变量的不收回,而且一但给了地址它,这个地址就是它的了,不管程序结不结束。它在等待有个语句来释放它。或者关了电脑也就没了。
“Java中的变量分为局部变量(定义在方法内的非静态变量),成员变量(定义在类级别的非静态变量),全局变量(定义在类级别的静态变量)?”是可以这么说的。


最好用的应该是(全局变量)静态变量,因为定义为静态了,就直接类名点成员名(如你在类string定义static int number,那你可以直接string.number就行了,但会占内存直到程序结束)。第二好用的是成员变量了,定义了之后,在整个类里都可以用。相对局部变量就只能在大括号定义大括号里用。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
实例变量和类变量的区别:

             1、存放位置。

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

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

               2、生命周期:

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

                     实例变量生命周期随着对象的消失而消失。
他们能同时出现在编程里,但在运行时就有先后的。
回复 使用道具 举报 1 0
shiweiCao 发表于 2013-6-10 12:56
“局部变量、成员变量”我称为非静态成员变量。
“全局变量”称为静态成员变量。
非静态成员变量是在定义 ...

加油  哈哈  云四就咱们几个骨干
回复 使用道具 举报
楼主你好  如果问题已经解决  请把帖子的类型改为已解决  然后会给你发几个粽子吃
回复 使用道具 举报
袁梦希 发表于 2013-6-12 19:06
加油  哈哈  云四就咱们几个骨干

哎,明天交了试题就准备面试.  没想到我这么脸厚的也会紧张
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马