zoukankan      html  css  js  c++  java
  • Java类初始化


    Java类初始化


     

    成员变量的初始化和构造器

    • 如果类的成员变量在定义时没有进行显示的初始化赋值,Java会给每个成员变量一个默认值
      1. 对于  char、short、byte、int、long、float、double等基本数据类型的变量来说会默认初始化为0(boolean变量默认会被初始化为false)
      2. 对于引用类型的变量,会默认初始化为null
    • 如果类内没有显示的定义构造器,则编译器会自动创建一个无参构造器,但是如果类内显示定义了构造器,则编译器不会再自动创建无参构造器

    类初始化的顺序

    • 当程序需要生成一个类对象时,Java执行引擎会先检查是否加载了这个类,如果没有加载,则先执行类的加载再生成对象,如果已经加载,则直接生成对象
    • 在类的加载过程中,类的static成员变量会被初始化,如果类中有static语句块,则会执行static语句块。static成员变量和static语句块的执行顺序同代码中的顺序一致。在Java中,类是按需加载,只有当需要用到这个类的时候,才会加载这个类,并且只会加载一次
    public class Main {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Person p1 = new Person();
            Person p2 = new Person();
        }
    
    }
    class Person {
        static{
            System.out.println("Person");
        }
        public Person(){
            System.out.println("It is a person");
        }
    }
    
    //输出
    Person
    It is a person
    It is a person
    View Code
    • 在生成对象的过程中,会先初始化对象的成员变量,然后再执行构造器。即类中的变量会在任何方法(包括构造器)调用之前得到初始化
    public class Main {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Person p = new Person();
        }
    
    }
    class Person {
        private Pet p = new Pet(); 
        public Person(){
            System.out.println("It is a person");
        }
    }
    class Pet {
        public Pet(){
            System.out.println("The person's pet");
        }
    }
    
    //输出
    The person's pet
    It is a person
    View Code
  • 相关阅读:
    python 适配器
    python 装饰器
    实测 《Tensorflow实例:利用LSTM预测股票每日最高价(二)》的结果
    TFRecord 存入图像和标签
    TFRecord 读取图像和标签
    CONDA常用命令
    sotfmax的通俗理解
    sigmoid的通俗理解
    查看日志,定位错误_常用的操作
    工作中Git实操详解_看完这篇直接上手!
  • 原文地址:https://www.cnblogs.com/zhanglei93/p/5749796.html
Copyright © 2011-2022 走看看