zoukankan      html  css  js  c++  java
  • JAVA基础篇 之 类的初始化

    1. 类中属性的隐式初始化,代码如下,我们看下不同类型默认的初始值是什么

      创建一个Demo类如下:

      class Demo {
          int a;
          byte b;
          short c;
          long d;
          boolean e;
          char f;
          float g;
          double h;
          Demo demo;
      }
      

      可以看到初始化的值如下:
      在这里插入图片描述

    2. 在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间。它们仍然会在任何方法(包括构造器)被调用之前得到初始化。

    我们看如下代码:

    public class Test01 {
        public static void main(String[] args) {
            House house = new House(3);
        }
    
        static class House {
            Window window3 = new Window(3);
    
            public House(int windows) {
                System.out.println("house(" + windows + ")");
            }
    
            Window window1 = new Window(1);
            Window window2 = new Window(2);
    
        }
    
        static class Window {
            public Window(int marker) {
                System.out.println("window(" + marker + ")");
            }
        }
    }
    
    

    打印结果如下:

    window(3)
    window(1)
    window(2)
    house(3)
    

    可以看到,在初始化时,会先对类中的属性进行显示初始化,即对属性进行一次显示的赋值,在显示初始化执行完后,会对类进行构造函数初始化。

    1. 静态数据的初始化

      ​ 首先我们要知道,静态数据是所有类对象共享的,静态数据只占一份存储区域。静态数据随着类的加载而加载,static关键字只能作用于域,我们不能在方法中使用static关键字(稍后会解释为什么)。如果一个我们在声明类时,没有给静态只能初始值,那么它会被默认初始化成对应的值(见【1】默认初始化)

    2. 这里提前说一下:

      对于初始化我们要记得一个原则,先静态后非静态,先父后子

      即在初始化一个类时,会先初始化对静态数据进行初始化,在父类跟子类同时有静态数据时,遵循先父后子的规律,当静态数据初始化完后,非静态的数据初始也遵循先父后子的顺序

  • 相关阅读:
    GPU上的随机森林:比Apache Spark快2000倍
    基于TensorFlow2.x的实时多人二维姿势估计
    用code2vec、glow和spaCy进行词嵌入
    如何进行数据科学竞赛?(EDA)
    Python性能分析技巧
    PyTorch中基于TPU的FastAI多类图像分类
    GitHub上的AutoML
    Keras vs PyTorch vs Caffe:CNN实现对比
    深度学习的学习率调节实践
    win7下MariaDB10.0的my.ini配置文件的位置
  • 原文地址:https://www.cnblogs.com/daimzh/p/12854459.html
Copyright © 2011-2022 走看看