静态块,代码块,构造方法的区别
2016-07-19 11:01
225 查看
静态块:static{ }
代码块:{ }
构造块;类 对象 =new 类()
执行的顺序(优先级:静态块>代码块》构造块)
代码块:
public class Test{
public static void main(String args[]) Exception throws{
new Leaf();
new Leaf("ABC);
new Leaf();
}
}
//静态初始化块,构造块,构造方法(226-268)
class Root{
static {
System.out.println("Root1的静态初始化");
}
{
System.out.println("Root1的构造块");
}
public Root() {
System.out.println("Root1的构造方法");
}
}
class Mid extends Root{
static {
System.out.println("Mid的静态初始化");
}
{
System.out.println("Mid的构造块");
}
public Mid() {
//super();
System.out.println("Mid的构造方法");
}
}
class Leaf extends Mid{
static {
System.out.println("Leaf的静态初始化");
}
{
System.out.println("Leaf的构造块");
}
public Leaf() {
super();
System.out.println("Leaf的构造方法");
}
public Leaf(String msg) {
this();
System.out.println(msg);
}
}
总结:先加载类,在加载对象,有了类才能加载对象,先执行static静态块,在执行构造块,最后执行构造器·,再次执行时jvm(java虚拟机已经有了此类),不会再执行static静态块,直接执行代码块,构造块
运行结果:
Mid的静态初始化
Leaf的静态初始化
Root1的构造块
Root1的构造方法
Mid的构造块
Mid的构造方法
Leaf的构造块
Leaf的构造方法
Root1的构造块
Root1的构造方法
Mid的构造块
Mid的构造方法
Leaf的构造块
Leaf的构造方法
ABC
Root1的构造块
Root1的构造方法
Mid的构造块
Mid的构造方法
Leaf的构造块
Leaf的构造方法
代码块:{ }
构造块;类 对象 =new 类()
执行的顺序(优先级:静态块>代码块》构造块)
代码块:
public class Test{
public static void main(String args[]) Exception throws{
new Leaf();
new Leaf("ABC);
new Leaf();
}
}
//静态初始化块,构造块,构造方法(226-268)
class Root{
static {
System.out.println("Root1的静态初始化");
}
{
System.out.println("Root1的构造块");
}
public Root() {
System.out.println("Root1的构造方法");
}
}
class Mid extends Root{
static {
System.out.println("Mid的静态初始化");
}
{
System.out.println("Mid的构造块");
}
public Mid() {
//super();
System.out.println("Mid的构造方法");
}
}
class Leaf extends Mid{
static {
System.out.println("Leaf的静态初始化");
}
{
System.out.println("Leaf的构造块");
}
public Leaf() {
super();
System.out.println("Leaf的构造方法");
}
public Leaf(String msg) {
this();
System.out.println(msg);
}
}
总结:先加载类,在加载对象,有了类才能加载对象,先执行static静态块,在执行构造块,最后执行构造器·,再次执行时jvm(java虚拟机已经有了此类),不会再执行static静态块,直接执行代码块,构造块
运行结果:
Mid的静态初始化
Leaf的静态初始化
Root1的构造块
Root1的构造方法
Mid的构造块
Mid的构造方法
Leaf的构造块
Leaf的构造方法
Root1的构造块
Root1的构造方法
Mid的构造块
Mid的构造方法
Leaf的构造块
Leaf的构造方法
ABC
Root1的构造块
Root1的构造方法
Mid的构造块
Mid的构造方法
Leaf的构造块
Leaf的构造方法
相关文章推荐
- C++11新特性之新类型与初始化
- C# 托管资源和非托管资源
- 在学习java的路上
- 一条进程的栈区、堆区、数据区和代码区在内存中的映射
- 下面代码中,数组LA[ ]维度怎么就自动扩充了呢
- java 面向对象概念
- java基础-使用Arrays管理数组排序,复制,查找,填充
- Java中使用Collections.sort()方法对数字和字符串泛型的LIst进行排序
- 关于Java权限控制SecurityManager的理解
- eclipse发布web项目兼ssh框架搭建
- C语言getenv()函数:取得环境变量内容
- JAVA-MyBatis ORM
- import numpy 和 from numpy import * 的区别
- C#WinCE 记录日志文件
- ASP.NET MVC设计原则讲解
- SSM报错:java.sql.SQLException: 无效的列类型: 1111
- Java基本类型学习
- 数据区,代码区,堆栈区,操作系统堆栈
- Xcode代码字体变成白色,无法出现联想代码解决方案
- C# 中的回车换行符