`
kewen342757003
  • 浏览: 143536 次
社区版块
存档分类
最新评论

java 类中初始化顺序学习笔记

阅读更多
一个类中的字段初始化工作进行顺序如下:
1.类中字段自动初始化/制定初始化。
    这两种初始化是同优先级的,如果有多个字段需要初始化,依照定义的先后顺序,依次进行初始化。

private int i; 

这里进行的就是自动初始化,会将i设置成0。(不同类型的变量有不同的默认初始化值)
这个步骤是仅限于类中的字段。如果在方法中使用未经赋值的变量,编译会不通过

private int i = 3;

这里进行的就是制定初始化。

2.进行构造方法初始化。
class Counter 
{
    int i;
    Counter() 
    { 
        i = 7; 
    }
}

这里的i最终被初始化为7,但是其实经过了初始化为0的一步,第二部被构造方法初始化为7。
到此为止,初始化工作全部完成。


3.继承类的构造方法调用顺序
class Art {
Art() {
System.out.println("Art constructor");
}
}
class Drawing extends Art {
Drawing() {
System.out.println("Drawing constructor");
}
}
public class Cartoon extends Drawing {
Cartoon() {
System.out.println("Cartoon constructor");
}
public static void main(String[] args) {
Cartoon x = new Cartoon();
}
}

该程序的输出显示了自动调用:
Art constructor
Drawing constructor
Cartoon constructor
基类会在衍生类访问之前,进行初始化,调用构造方法。 即使我们没有给衍生类加上自己的构造方法,编译器也会自动给出一个默认的构造方法,从最高层的基类依次向下调用所有的构造方法。



Tips:
1.Static字段都在非Static字段之前进行初始化。
2.在类中的任何方法执行之前(包括构造方法),首先会完成所有字段的初始化。
3.方法首次使用的地方也是static 初始化发生的地方。装载的时候,所有static 对象和static 代码块都会按照类代码中的书写顺序依次初始化。
4.static 数据只会初始化一次。
分享到:
评论

相关推荐

    java学习笔记 初学者必读

    5.3. 初始化数组 5-10 5.4. 多维数组 5-10 5.5. 数组拷贝 5-10 6. 五•对象和类 6-11 6.1. 面向对象与面向过程 6-11 6.2. 对象的概念 6-12 6.3. 成员变量和局部变量 6-12 6.4. 成员方法 6-12 6.5. This关键字 6-13 ...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、操作、应用或认证考试上的各种问题及解决方案。  《Java JDK 7学习笔记》详细介绍了JVM、JRE、Java SE API、JDK与IDE...

    Java并发编程(学习笔记).xmind

    (1)确保某个计算在其需要的所有资源都被初始化后才能继续执行 (2)确保某个服务在其所依赖的所有其他服务都已经启动之后才启动 (3)等待知道某个操作的所有参与者都就绪再继续执行 ...

    java学习笔记–java基础

    java学习笔记 ...三种初始化及内存分析Arrays类稀疏数组1.6 字符串1.7 方法(函数)方法的定义和调用方法的重载命令行传递参数可变参数递归 第一部分. java基础 1.1 输入输出 Scanner in=new Scanner(Syste

    杰普学习corejava总结笔记

    类加载,同时初始化类中静态的属性(赋默认值) 2.执行静态代码块 3.分配内存空间,同时初始化非静态的属性(赋默认值) 4.调用父类构造器(注意调用父类构造器之前已经给父类的非静态的属性显示赋值,如果有显示赋值的话...

    Java学习笔记-个人整理的

    {1.10.2}数组变量的初始化}{34}{subsection.1.10.2} {1.10.3}数组对象的引用}{35}{subsection.1.10.3} {1.10.4}数组对象的复制}{35}{subsection.1.10.4} {1.10.5}扩充数组对象长度}{36}{subsection.1.10.5} {...

    c#学习笔记.txt

    在类中,必须初始化实例对象. 使用 new 运算符创建结构对象时,将创建该结构对象,并且调用适当的构造函数。与类不同的是,结构的实例化可以不使用 new 运算符。如果不使用 new,那么在初始化所有字段之前,字段将...

    c#学习笔记——学习心得

    结构不能从另一个结构或类继承而来,但可以实现接口,结构中不能初始化实例。结构存储在栈中且只用来表示小的数据结构,类存储在托管堆中 类:是一种数据结构,是具有相同或相似结构、操作和约束规则的对象组成的...

    jvm笔记

    在 JVM 中,执行过程可以分为三个步骤:类加载、链接和初始化。在类加载阶段,ClassLoader 负责加载类文件,并将其转换成 JVM 可以识别的格式。在链接阶段,JVM 负责将类文件转换成机器代码。在初始化阶段,JVM 负责...

    java8stream源码-Learning-Note:学习笔记持续更新

    java8 stream 源码 设计模式 单例模式 懒汉 public class SingleTon{ private ...//懒汉模式在方法被...//饿汉模式在类被初始化时就已经在内存中创建了对象,以空间换时间,故不存在线程安全问题。 静态内部类 public c

    【Java设计模式】你对单例模式了解多少,一文深入探究

    目录单例模式懒汉式单例模式未初始化问题解决Double Check 双重检查方案一:不让第二步和第三步重排序-DoubleCheck方案二:基于类初始化-静态内部类饿汉式饿汉式与懒汉式最大区别序列化破坏单例模式原理枚举单例基于...

    高级java笔试题-spring-cloud:spring-cloud学习项目

    本项目是学习《中华石杉老师-21天互联网Java进阶面试训练营(分布式篇)》课程时自己整理的笔记和代码试验,希望对大家有所帮助。 课程质量是当前市面上最好的,没有之一。可以扫一个下面二维码加入 也可以微信上从...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    thinking-in-spring:学春天

    春天学习笔记 Bean初始化 BeanDefinitionBuilder 新的GenericBeanDefinition Bean的命名(非强制性) BeanNameGenerator AnnotationBeanNameGenerator Bean的别名(一般XML配置) 别名 BeanDefinition的注册 ...

Global site tag (gtag.js) - Google Analytics