Java 中静态变量和实例变量区别

  • 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量。
  • 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量。

在程序运行时的区别:

  • 实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。
  • 静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。

总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

例如,对于下面的程序,无论创建多少个实例对象,
永远都只分配了一个 staticInt 变量,并且每创建一个实例对象,这个 staticInt 就会加 1;但是,每创建一个实例对象,就会分配一个 random,
即可能分配多个 random ,并且每个 random 的值都只自加了1次。

public class StaticTest {
private static int staticInt = 2;
private int random = 2; public StaticTest() {
staticInt++;
random++;
System.out.println("staticInt = "+staticInt+" random = "+random);
} public static void main(String[] args) {
StaticTest test = new StaticTest();
StaticTest test2 = new StaticTest();
}
}

最新文章

  1. linux 中压缩记得压缩用c,解压用x
  2. android sdk镜像站点
  3. PHP——使用header()函数下载文件
  4. .offsetLeft,.offsetTop
  5. (转)SQLServer_T-SQL 语句执行时间的查询
  6. CentOS下crontab执行java程序
  7. HibernateDaoSupport 源码
  8. Ubuntu 12.04.2搭建nfs服务器
  9. 【原创】【Android New Features】—— 关于ADT 17的BuildConfig.DEBUG
  10. v8 源码获取与build
  11. VS2008下直接安装使用Boost库1.46.1版本号
  12. 用 python 写一个年会抽奖小程序
  13. PythonStudy——Python 内置函数 Built-in function
  14. Node入门教程(6)第五章:node 模块化(上)模块化演进
  15. <Consistency><of HBase><CAP><ACID>
  16. mysql之存储引擎和文件配置
  17. django 用户管理系列:1 user
  18. vuex - 辅助函数学习
  19. ORDER BY 子句在视 图、内联函数、派生表、子查询和公用表表达式中无效
  20. 一个Unix内核级别漏洞(一)

热门文章

  1. 1 TaskQueue 实现Task 队列
  2. Ajax基本写法
  3. ubuntu16.04 安装 eclipse
  4. 【hiho一下 第146周】子矩阵求和
  5. hdu 4046 树状数组
  6. 为什么视频流一般都用UDP
  7. Unity图片变灰的方式
  8. [RxJS 6] The Retry RxJs Error Handling Strategy
  9. Unity Update 具体解释
  10. Think in ISP(image sensor pipe )之How to implement an effecitive AE