关键字static,静态
来源:互联网 发布:js身份证号码格式验证 编辑:程序博客网 时间:2024/05/23 17:14
static
虚拟机准备阶段是正式为类变量(static修饰的类成员变量)分配内存并设置类变量初始值的阶段,这些变量使用的内存都在方法区中进行分配。
- 这时只对类变量进行内存分配,不包括实例变量。实例变量在对象初始化时随对象一起分配在Java堆中。
- 初始值“通常情况”下是数据类型的默认值(int——0,boolean——false……)
public static int value = 123;
那么类变量value在准备阶段过后的初始值为0,而不是123.因为这时尚未开始执行任何Java方法,而把value赋值为123的putstatic指令是指程序被编译后,存放于类构造器<clinit>()方法中,所以把value赋值为123的动作在初始化阶段才会执行。
java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种没有static修饰,为实例变量。
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。
而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。
静态块在第一个对象创建时运行
初始化块在每个对象创建时运行
区别是静态块只执行一次,操作的内存在静态区
初始化块每个对象构造时都需要执行一次,操作的内存在用户区
0 0
- Static Keyword--静态关键字
- 关键字 static 静态的
- 静态 static 关键字用法
- php static 静态关键字
- java静态关键字static
- 关键字static-静态
- 关键字static,静态
- static(静态)关键字
- 1.5static静态关键字
- Static、静态关键字、详解
- 理解静态Static关键字(转)
- 黑马程序员-----static静态关键字
- Java Static静态关键字理解
- static关键字、静态代码块
- 静态代码块-static关键字
- static关键字(静态方法)
- Static(静态)关键字总结
- php之static静态关键字
- hive安装(本地mariaDB为元数据库)
- C语言共用体(Union)
- 搭建CentOS在线yum源镜像服务器
- C# 中Parse 和TryParse的效率问题
- 用CSS3实现带小三角形的div框(不用图片)
- 关键字static,静态
- MySQL一些函数的使用
- memcache
- C语言枚举类型(Enum)
- android thread 和service的区别
- CI框架(无限级分类+递归)
- Java程序打包成jar包
- 关于五子棋
- C语言结构体和指针