zoukankan      html  css  js  c++  java
  • java的初始化(编程思想)

    6、成员初始化
    java尽量保证:所有变量在使用前都能得到恰当的初始化。对于方法的局部变量,java以编译错误的形式来贯彻这种保证。
    如果类的成员变量时基本类型,那么没有初始化给默认值
    在类里定义一个引用对象时,如果不将其初始化,此引用就会获得一个特殊值null
    7、构造器初始化
    可以用构造器来进行初始化。但要牢记:无法阻止自动初始化的进行,它将在构造器被调用之前发生。

    初始化顺序
    变量定义的先后顺序决定了初始化的顺序。即使变量定义与散布于方法定义之间,它们仍然会在任何方法(包括构造器)被调用之间得到初始化
    静态数据的初始化
    无论创建多少个对象,静态数据都只占用一份存储区域。static关键字不能应用于局部变量,因此它只能作用于域。如果一个域是静态的基本类型域,也没有进行初始化,那么它就会获得基本数据类型的标准初始值,如果它是引用数据类型,那么它的默认初始值就是null。
    静态初始化只有在必要时刻才会进行。如果不创建Table对象,也不引用Table.b1或者Table.b2,那么静态的Bowl b1和b2永远都不会被创建。只有在第一个Table对象被创建(或者第一次访问静态数据)的时候,它们才会被初始化。
    初始化的顺序是先静态对象,而后面是非静态对象

    总结一下对象的创建过程,假设有一个名为Dog的类。
    1、即使没有显式使用static关键字,构造器实际上也是静态方法。因此,当首次创建类型为Dog的对象或者Dog的静态方法/静态域被首次访问时,Java解析器必须查找类路径,以定位Dog.class文件。
    2、然后载入Dog.class,有关静态初始化的所有动作都会执行。因此,静态初始化只在Class对象首次加载的时候进行一次
    3、当用new Dog()创建对象的时候,首先将堆上为Dog对象分配足够的存储空间
    4、这块存储空间会被清零,这就自动地将Dog对象中的所有基本类型都设置成了默认值,而引用则被设置成了null
    5、执行所有出现于字段定义出的初始化操作
    6、执行构造器

    显式的静态初始化
    java允许将多个静态初始化动作组织成一个特殊的“静态子句”,有时也叫做“静态代码块”。尽管它看起来想个方法,但实际上只是一段跟在static关键字后面的代码。与其他静态初始化动作一样,这段代码仅执行一次:当首次生成这个类的一个对象时,或者首次访问属于那个类的静态数据成员时。
    非讲台实例初始化
    Java中也有被称为实例初始化的类似语法,用来初始化每一个对象的非静态变量。
    它们与静态初始化子句是一模一样的,只不过少了static关键字。这种语法对于支持匿名内部类的初始化是必须的,但是它也使得你可以保证无论调用了哪个显式构造器,某些操作都会发生。实例初始化子句是在构造器之前执行的。

  • 相关阅读:
    JavaScript 立即执行函数和闭包
    Visual Studio2017 离线安装
    D19 Sping Boot 入门 Sping框架--Java Web之书城项目(九) AJAX
    D18 Sping Boot 入门 Sping框架--Java Web之书城项目(八) 过滤器
    D17 Sping Boot 入门 Sping框架--Java Web之Filter过滤器
    在Django中写mqtt脚本并使用
    Django对models层数据库的增删改查操作
    前端调用mqtt不能使用1883端口的问题
    vue结合mqtt
    mqtt服务器的安装(2)--mosquitto
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/7226916.html
Copyright © 2011-2022 走看看