Java 类、对象内容回顾
来源:互联网 发布:thething知乎 编辑:程序博客网 时间:2024/05/17 22:53
一、类的初始化
类的初始化:主要是执行执行类中的静态块初始化和静态变量初始化
当类被用到的时候就会进行初始化,但是不一定会被实例化,实例化的时候才会执行实例域的初始化和初始化代码块的代码
class ThirdInit{ private int age=0;//这种是第一种方式 private String name="initial name"; private static String staticField="initial staticField"; { System.out.println("初始化之前 "+age+" "+name+" "+staticField); age=10; name="static name"; staticField="static staticfield"; System.out.println("初始化之后 "+age+" "+name+" "+staticField); } static { /** * 静态初始化块:用来初始化静态变量的,静态初始化块中只能接触静态变量 */ System.out.println("静态初始化之前"+staticField); staticField="static name"; System.out.println("静态初始化之后"+staticField); } public ThirdInit(String name,int age,String staticField){ System.out.println("构造器执行之前:"+age+" "+name+" "+staticField); this.name=name; this.age=age; this.staticField=staticField; System.out.println("构造器执行之后:"+age+" "+name+" "+staticField); }}
结果:
静态初始化之前initial staticField静态初始化之后static name初始化之前 0 initial name static name初始化之后 10 static name static staticfield构造器执行之前:100 new name new static field构造器执行之后:100 new name new static field
结果说明:
- 当实例化一个类的时候顺序:先是静态的,然后是显示的,最后才是构造器本身
- 先是静态域和静态块顺序执行,显示的域初始化和块初始化顺序执行、最后是构造器本身
----------class ThirdInit{ private int age=0;//这种是第一种方式 private String name="initial name"; private static String staticField="initial staticField"; { System.out.println("初始化之前 "+age+" "+name+" "+staticField); age=10; name="static name"; staticField="static staticfield"; System.out.println("初始化之后 "+age+" "+name+" "+staticField); } static { /** * 静态初始化块:用来初始化静态变量的,静态初始化块中只能接触静态变量 */ System.out.println("静态初始化之前"+staticField); staticField="static name"; System.out.println("静态初始化之后"+staticField); } public ThirdInit(String name,int age,String staticField){ System.out.println("构造器执行之前:"+age+" "+name+" "+staticField); this.name=name; this.age=age; this.staticField=staticField; System.out.println("构造器执行之后:"+age+" "+name+" "+staticField); } public static void main(String[] args) { System.out.println("main 方法开始执行"); }}
输出:
静态初始化之前initial staticField静态初始化之后static namemain 方法开始执行
这里说明:构造代码块和显示域是属于一个类的实例的,如果没有调用一个类的构造函数,那么这些都不会执行。
所有的动作都是从父类到子类执行的
二、对象的初始化
public class Test{ private static String staticField=init("Test类静态域初始化"); public String obField=init("Test实例域初始化"); static{ System.out.println("Test 静态块"); } { System.out.println("Test 实例域块"); } public static void main(String[] args) { System.out.println("\n main 函数开始执行,实例化Test类和Apple类---------------------------\n"); new Test(); new Apple(); } public static String init(String field){ System.out.println(field); return "static Field"; }}class Fruit{ static{ System.out.println("父类static block"); } { System.out.println("父类 block"); } public Fruit() { System.out.println("父类构造函数"); }}class Apple extends Fruit{ static{ System.out.println("子类 static block"); } { System.out.println("子类 block"); } public Apple() { System.out.println("子类 构造函数"); }}
输出结果:
Test类静态域初始化Test 静态块 main 函数开始执行,实例化Test类和Apple类---------------------------Test实例域初始化Test 实例域块父类static block子类 static block父类 block父类构造函数子类 block子类 构造函数
这说明,用到某个类的时候它才会被加载进来并进行类初始化(执行static变量和static块,此时先执行父类的在执行子类的),当实例化的时候才会进行对象初始化(实例域初始化和代码块初始化,先父类再子类)
0 0
- Java 类、对象内容回顾
- Java(SE)内容回顾
- java socket内容回顾
- Java内容回顾
- java面向对象基础回顾
- java回顾 --- 面向对象概述
- Java 回顾笔记_基本数据类型对象包装类
- 内容回顾
- 类和对象知识点回顾
- 数据结构回顾版-java数据结构-存储对象
- 黑马程序员-java面向对象回顾
- Java 回顾笔记_对象初始化过程
- java基础回顾_day06_面向对象
- JAVA SE 面向对象回顾01
- java基础回顾-01-什么是面向对象
- Java 类加载回顾
- Java枚举类回顾
- Web内容回顾
- [总结]C++关键字详解——const
- 不同指针类型,不同字节大小
- Spring原理(二)IoC容器的初始化过程之ApplicationContext
- eclipse mars 安装groovy插件
- HTML5新标签
- Java 类、对象内容回顾
- Android入门教程 SQLite的用法
- FPGA供电电压和JTAG引脚定义
- Shell 脚本
- Android Support Design库之DrawerLayout和NavigationView
- MySQL存储过程详解
- Pyton学习总结(7)-异常
- 获取本机服务器IP
- 强制弹出软键盘