static深入理解(深入浅出)
来源:互联网 发布:怎么增加淘宝访客量 编辑:程序博客网 时间:2024/06/06 10:13
在C#(java/C等等)语言中有这样一种声明变量的方式:static 类型名关键字 变量名
我们都知道static直译是"静止的"、"不变的"意思,行内中我们习惯称为"静态"
那么有意思的事情来了,既然是"不变的"那么为什么用了static该变还是变呢,例如这样
public void test()
{
static int b = 10;
}
这样还是改变了b的值.
剖析:
程序编译的时候会发现b用了static这个关键字,且立马给b分配内存空间,且b所指的值(10)存于栈中(单指值类型,引用类型于堆中),而b则是指向于存放"10"这个值得地址的一个标记,简单来说b存放了值"10"的地址,通过b则可以访问到对应的值,这个值是可以被改变的,但是!!!b是在程序运行期间无法改变的,也就是指向"10"的那个地址不能被改变,这就导致了当程序再次运行test的时候不会再为b重新分配存储空间.
总结:
1.用static声明了的变量只会在程序重新执行的时候才会分配空间 以及地址
2.值可变,而指向其地址不变
我们都知道static直译是"静止的"、"不变的"意思,行内中我们习惯称为"静态"
那么有意思的事情来了,既然是"不变的"那么为什么用了static该变还是变呢,例如这样
public void test()
{
static int b = 10;
}
这样还是改变了b的值.
剖析:
程序编译的时候会发现b用了static这个关键字,且立马给b分配内存空间,且b所指的值(10)存于栈中(单指值类型,引用类型于堆中),而b则是指向于存放"10"这个值得地址的一个标记,简单来说b存放了值"10"的地址,通过b则可以访问到对应的值,这个值是可以被改变的,但是!!!b是在程序运行期间无法改变的,也就是指向"10"的那个地址不能被改变,这就导致了当程序再次运行test的时候不会再为b重新分配存储空间.
总结:
1.用static声明了的变量只会在程序重新执行的时候才会分配空间 以及地址
2.值可变,而指向其地址不变
使用时需注意:static声明了的变量不会被GC回收,所以慎用!
如果错误请指正!!!!!!!谢谢!
阅读全文
0 0
- static深入理解(深入浅出)
- 深入理解static
- 深入理解static
- Static关键字深入理解
- static 深入理解
- static的深入理解
- C语言static深入理解
- Java中static深入理解
- c语言深入理解<1>static理解
- 深入理解C#的中static
- 面向对象复习,深入理解static关键字
- 深入理解java的static关键字
- 深入理解java的static关键字
- java基础——static深入理解
- 【c++进阶】深入理解static关键字
- 深入理解Java中static关键字
- activity的深入浅出-------通过几个问题来深入理解handler机制
- C#中修饰符static的深入理解
- Svn修改自己已经提交的备注
- 内存泄漏----检查方法
- 数据库事务
- bzoj 3629: [JLOI2014]聪明的燕姿
- 解析京东大数据下高效图像特征提取方案
- static深入理解(深入浅出)
- Ubuntu16.04安装redis和php7.0的redis扩展
- 《Neural Networks and Deep Learning》学习笔记三-神经网络输出层神经元个数
- Tomcat源码走读-内存泄露检测
- c语言-扫雷
- 15周 Python入门(人生苦短,我用Python)
- Hexo+Github搭建blog
- Matlab 之 find()函数
- 创建登陆界面