静态代码块+构造代码块+构造方法
来源:互联网 发布:美国经济数据gdp 编辑:程序博客网 时间:2024/05/01 08:30
分析一段代码:
public class Test1 {
publicstatic Test1 t1=new Test1();
publicstatic Test1 t2=new Test1();
{
System.out.println("构造块");
}
static{
System.out.println("静态块");
}
public static void main(String[] args)throws IOException{
Test1t=new Test1();
}
}
输出结果:
构造块
构造块
静态块
构造块
main方法是一个程序的入口,平时自己分析时只用到下面的四个栈、堆、静态域和常量池。这里也只针对下面四个存储区域进行分析
栈主要是存放基本类型的变量数据和对象的引用,就是一些变量,比如t1、t2;堆就是存放所有new出来的对象;静态域是存放静态成员(static定义的); 常量池是存放字符串常量和基本类型常量(public static final)。平时分析也可以将静态域和常量池放在一个地方分析。
现在分析一下本程序:
执行顺利是静态代码块>构造代码块>构造方法。其中静态属性>静态方法。程序运行,加载Test1类,首先将静态属性public static Test1 t1=new Test1();放入静态域,然后通过new在堆中产生一个对象,对象中只有构造代码块。可以把构造代码块理解成跟构造方法一样,自动加载。所以打印"构造块",然后执行public static Test1 t2=new Test1();打印"构造块"、最后执行静态代码块,打印"静态块"。然后执行静态方法,main,打印"构造块"。
可能分析的并不是很好,欢迎大家发言
- 静态代码块、构造代码块、构造方法执行顺序
- 静态代码块+构造代码块+构造方法
- 静态代码块,构造代码块,构造方法执行顺序
- 静态代码块,构造代码块以及构造方法
- 构造块/静态代码块
- 静态代码块-非静态代码块-默认构造方法
- 普通代码块 静态块 构造块
- 静态代码块,代码块,构造方法执行顺序
- 静态代码块、代码块、构造方法的执行顺序
- 构造代码块与静态代码块
- 静态代码块和构造代码块
- 构造代码块 VS 静态代码块
- 静态代码块和构造代码块
- 静态代码块,构造代码块
- Java的构造方法和构造代码块,静态代码块,代码块
- 静态代码块、构造代码块、局部代码块、构造方法的执行顺序
- java 静态代码块,构造代码块,构造方法,普通代码块的执行顺序
- 父类、静态构造代码块、构造代码块、构造函数
- 计算一天的毫秒与微秒相除
- leetcode/algorithm 3. Longest Substring Without Repeating Characters
- R语言主成分分析
- jQuery获取当前时间
- iOS中的Copy
- 静态代码块+构造代码块+构造方法
- java注解和反射制作dao基类的练习
- 删除线性表中的重复元素
- Wireshark学习笔记——如何快速抓取HTTP数据包
- Servlet中Cookie的用法
- C++Primer第五版 第十章习题答案(41~42)
- 网络连接评分机制之NetworkAgent
- Cannot create PoolableConnectionFactory(违反协议)
- yarn中资源调度fair schedule详解