Java 静态变量分析
来源:互联网 发布:男士 护肤品牌 知乎 编辑:程序博客网 时间:2024/06/05 20:33
本人第一次写博客,这个冲动的来源于敬爱的陈宇明博主的一篇程序人生,本人开发也没有多久,一年时间也经历了很多坑。一直只拿别人的知识,我也想奉献一点自己的。为我们码农同胞献上我的微薄之力。有不对之处一定要指出。我选择Java静态变量分析的原因,是最开始我对这个静态变量就很不懂,觉得这是一个很神奇有很危险的东西(至今我也觉得它比较危险),废话不多说直接讲解。
- static含义:与类共存,static修饰的变量,供静态方法和对象公用(单独的空间存取,不用每个对象都有一份,节约内存),static修饰的方法(类方法)中不能定义this,super关键字,能被成员方法调用,但不能调用成员方法。
- 静态变量初始化的具体流程:当首次创建class对象时,或者class类中的静态方法/静态域首次被访问时,Java解释器会载入这个class文件,完成所有的静态初始化动作,故静态变量只在类加载时候进行一次。
- public class TextClass {
public static void main(String[] args) {
System.out.println("Creating new TextClass() in main");
Bowl bowl1 = new Bowl(0);
System.out.println("bowl:"+bowl+",bowl1:"+bowl1);
}
static class Bowl{
Bowl(int marker){
System.out.println("Bowl("+marker+")");
}
}
}
上面的代码说明初始化静态变量(静态变量bowl)是在对象创建之前,并且每次打印变量bowl 和 bowl1的地址都是不变的这也说明了他们初始化化动作只在类加载时进行一次。
3. 静态变量存储的位置:
- data包含静态初始化的数据,所以有初值的全局变量和static变量在data区。段的起始位置也是由连接定位文件所确定,大小在编译连接时自动分配,它和你的程序大小没有关系,但和程序使用到的全局变量,常量数量相关。[后续博客写内存分析时详细讲解]
4.静态优缺点:
- 优点:对对象的共享数据进行单独空间的存储,节约空间,没有必要每个对象都储存一份。即使对象没有创建也可以直接调用,与对象分离开。
- 缺点:生命周期较长(内存不能有效的进行回收),多进程进行访问时出现数据错误(典型的买票机制),访问出现局限性。
0 0
- Java 静态变量分析
- Java静态变量的初始化分析
- static静态变量分析
- Java静态变量初始化的一个实例的分析
- Java 中继承之后同名静态变量的问题分析
- 静态变量java static
- Java SE -- 静态变量
- Java中的静态变量
- JAVA 静态变量
- java 静态变量注意事项
- java 静态变量解释
- JAVA静态变量
- java静态变量简介
- java静态变量
- java中静态变量
- java 静态变量生命周期
- java的静态变量
- JAVA Static静态变量
- 常用设计模式详解
- Mastering Opencv ch4:SFM详解(二)
- LeetCode 52. N-Queens II 题解(C++)
- localhost & 127.0.0.1
- Linux下VNC/QT/OPENCV移植——i.MX6平台
- Java 静态变量分析
- bash环境配置
- LIS && LCS && LCIS
- python入门--基本概念
- linux select函数用法
- dom4j中branch,node,element区别
- NULL是什么?
- 多态基类声明virtual析构函数
- LightOJ1274(组合数)