zoukankan      html  css  js  c++  java
  • 从头认识java-4.7 构造器初始化(1)

    这一章节我们来聊聊构造器的初始化。

    (1)域的初始化在构造器初始化之前

    package com.ray.testobject;
    
    public class Test {
    	private int id;
    
    	public Test() {
    		System.out.println("id:"+id);
    		id = 2;
    		System.out.println("id:"+id);
    	}
    
    	public static void main(String[] args) {
    		new Test();
    	}
    }
    


    输出:

    id:0
    id:2
    从输出的结果可以看见,属性域在构造器之前已经初始化。

    (2)初始化的顺序

    无论属性域放到哪里,它的初始化都先于构造器的初始化,而且是按照排列的顺序初始化。

    package com.ray.testobject;
    
    public class Test {
    	private int id;
    
    	public Test() {
    		System.out.println("id:" + id);
    		System.out.println("name:" + name);
    		System.out.println("book:" + book);
    		id = 2;
    		name = "jack";
    		book = new Book();
    		System.out.println("id:" + id);
    		System.out.println("name:" + name);
    		System.out.println("book:" + book);
    	}
    
    	private String name;
    
    	private Book book;
    
    	public static void main(String[] args) {
    		new Test();
    	}
    }
    
    class Book {
    	public Book() {
    		System.out.println("create book");
    	}
    }


    输出:

    id:0
    name:null
    book:null
    create book
    id:2
    name:jack
    book:com.ray.testobject.Book@c3c749


    从上面的代码可以看出,无论属性域是基本类型还是对象,它们的初始化都在构造器初始化之前,而且是按照排列的顺序初始化。

    在构造器初始化之前,id初始化为0,name和book是对象,初始化为null。

    我们下面再举一个例子:

    package com.ray.testobject;
    
    public class Test {
    	public static void main(String[] args) {
    		new House();
    	}
    }
    
    class Window {
    	public Window(int id) {
    		System.out.println("create window:" + id);
    	}
    }
    
    class House {
    	Window w1 = new Window(1);
    
    	public House() {
    		System.out.println("create house");
    		w2 = new Window(99);
    	}
    
    	Window w2 = new Window(2);
    }


    输出:

    create window:1
    create window:2
    create house
    create window:99

    总结:这一章节主要介绍构造器初始化的顺序。

    这一章节就到这里,谢谢。

    -----------------------------------

    目录

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Linux命令行和Shell高效率使用方法
    PHP导出word,CVS,PDF
    PHP的CLI综合
    [PHP]算法-二叉树中和为某一值的路径的PHP实现
    [PHP]算法- 判断是否为二叉搜索树的后序遍历序列的PHP实现
    [PHP]算法- 二叉树的深度的PHP实现
    [PHP] 算法-镜像二叉树的PHP实现
    [PHP] 算法-二叉树的子结构判断的PHP实现
    [PHP] 算法-邻接矩阵图的广度和深度优先遍历的PHP实现
    [PHP] 算法-根据前序和中序遍历结果重建二叉树的PHP实现
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944473.html
Copyright © 2011-2022 走看看