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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 啷个里个郞 于 2012-5-13 00:58 编辑

                 类变量、静态变量和实例变量的区别?和使用注意事项?                

4 个回复

倒序浏览
//有类似的帖子:http://bbs.itheima.com/thread-8726-1-1.html

//在java中,类的实例变量和静态变量称为类属变量(class‘s variables,常称为类变量)或数据域。

//静态变量前有static关键字修饰
//类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名 进行访问,其生命周期取决于类的生命周期。

//实例变量前无static关键字修饰
//实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。

点评

有爱。谢谢  发表于 2012-5-13 00:52

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
类变量也叫静态变量,用static修饰,是所有对象所共有的变量,那么任何一个对象将其修改之后,其他对象用到这变量是就是修改后的值。
实例变量也叫对象变量,不加static修饰,是对象说是有的变量,当前对象对它的修改不会影响其他对象访问时的值。
按照我的理解,静态变量就像是一根铁丝,你用它的时候把它折成什么形状,那么下次别人用的时候它就是什么形状。而实例变量就像是一根橡胶棒,你用的时候把它折成弯的,下次人家用的时候它又回复到原来的形状了。
上一段演示代码:
  1. /**
  2. * 作者:于陈
  3. * 功能:演示static变量
  4. * 时间:2012年5月12日 12:49:35
  5. */
  6. package com.jihe;

  7. public class Test {
  8.         public static void main(String args[]) {
  9.                 Demo d1 = new Demo();// 实例化d1
  10.                 Demo d2 = new Demo();// 实例化d2
  11.                 d1.i = 2;
  12.                 d1.j = 3;
  13.                 System.out.println(d2.i);
  14.                 System.out.println(d2.j);

  15.         }
  16. }

  17. // 定义演示类Demo
  18. class Demo {
  19.         static int i = 0;
  20.         int j = 0;
  21. }
复制代码
输出:2
         0

点评

谢谢  发表于 2012-5-13 00:53

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.从内存块来看
类变量和对象存在于堆内存
静态变量存在于方法区,类变量存在于堆内存区,
  实例变量有: 成员变量 局部变量 final变量等,根据生命周期不同   成员变量存在于堆内存,局部变量存在于栈内存  final 存在于方法区

2.创建时间:
1.静态变量
2.类变量
3.局部变量(调用时产生,用完后回收)

点评

谢谢  发表于 2012-5-13 00:53
回复 使用道具 举报
类变量:包含局部变量和成员变量
静态变量:是在对象的加载就已经存在了。用static修饰
实例变量:存在于类的方法中,被方法调用

点评

谢谢  发表于 2012-5-13 00:56
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马