JAVA生成一个对象的过程和static关键字,代码块

内存分析:
1.java 栈 stack:
所有的局部变量都在栈中分配空间。
静态内存分配的。方法调用多少内存在编译器就确定了,占内存是serial分配的
效率仅低于 CPU的寄存器,
so,局部变量的效率高于成员变量,
栈内存回收,是方法回收,自动回收
2.java 堆,heap
所有new出来的对象都在队中分配空间,数组,对象
堆是jvm动态管理的,在运行期,堆创建的对象进行空间的动态分配
内存管理灵活,但是效率相对较低
3. 方法区
运行时需要的数据存储区:
累的字节码数据,template
常量池
静态数据区
不回收
Static 关键字
static可以用来修饰类的成员变量,还可以修饰成员方法
static 修饰成员变量
在代码中访问某个类的时候,第一步要对类进行加载的判断,如果没有加载,
那么加载类的字节码到方法区
类加载:装在——链接——类的初始化:
对类的静态成员变量进行空间的分配,第一步分配空间,默认初始化,在从上到下赋值
特点:
1:类加载只有一次,所以静态成员变量内存只分配一次,只有一份内存空间(方法区)
2:静态成员变量的内存不依赖于任何对象,依赖于类
3. 声明周期依赖于类
4.所有的该类的对象都可以访问static变量的内存空间,被所有对象共享
5.static 可以通过类名直接访问静态成员变量
static 修饰成员方法
用final 修饰的变量或者方法,一般都加static修饰,保证只有一份内存空间
特点: 1.类加载完毕之后就可以使用了,不需要创建对象
2.可以使用类名.或者对象调用静态方法
作用: 1. 静态方法可以用来访问静态成员
2.可以用来作为工具方法
代码块
类中包含的内容:
成员变量(静态的,普通的),成员方法(静态、普通)、构造方法
代码块:
1.局部代码块:就是在方法中的一堆大括号。
作用:可以将局部变量的作用域控制在大括号内
2.构造块:类的里面,方法的外面的一堆代码块
特点:每生成一个该类的对象,构造快就会被执行一次,按照顺序执行
比构造方法更早执行。
构造快在编译之后就不存在了,java会自动将构造快放入构造方法的前面执行
静态块:静态块在类加载的时候被执行,且无论对象被new了几次,只执行一次
作用:可以对静态成员变量进行初始化,对一些只执行一次,而且希望优先执行的功能
注意:静态块中不能访问实例成员
生成一个对象的过程:
1:类加载,在类加载的末期,类初始化部分,对静态成员变量进行初始化,并执行静态代码块。
2:JVM 在堆中分配一块内存供对象使用,并对对象所有的属性默认初始化
3:按照从上到下的顺序执行成员变量声明 处 的赋值以及构造块中的代码
4:执行构造方法代码
5:构造方法执行完毕,对象初始化完毕,由new关键字将生成的地址返回
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值