zoukankan      html  css  js  c++  java
  • java中对象的初始化问题

    最近又把java编程思想看了看。又有些收获。此书确实不错

    java中的初始化相信很多人都知道。但是具体的初始化步骤,初始化几次确不一定。上代码

    public class A{
    
        public static A a = new A();
    
        public static int i;
    
        public static int j= 2;
    
       
    
        public A(){
    
            i++;
    
            j++;
    
        }
    
       
    
        public static void main(String[] args){
    
            A a1= new A();
    
            System.out.println("i = " + a1.i);
    
            System.out.println("j= " + a1.j);
    
        }
    
    }

    输出结果是什么呢?

    2和3.

    对于java而言,构造对象时首先会执行自动初始化动作。即 初始化为

    A=null;
    i=0;
    j=0;

      然后再次初始化话定义的默认值

    a=new A();
    
    

     此处执行构造器导致i++,j++,结果

    i=1;
    j=1;
    

    之后给a赋值,此时a不在为null,

    然后就有点意思了

    继续执行 i的默认初始化,因为i没有设置默认值,所以i还是1,然后j由于有默认值j变成了2

    i=1;
    j=2;
    

     最后在执行构造器i++,j++

    最后结果

    i=2;
    j=3;
    

    如果此处把a这个特殊的情况去除可以看出。初始化有三个步骤:

    1.自动初始化为基本类型0,引用类型为null

    2.设置默认值

    3.执行构造器

    
    
    
  • 相关阅读:
    [YTU]_2417 C语言习题 字符串长度
    最小生成树学习笔记
    后缀数组学习笔记
    网络流的几个小优化
    面向对象
    Manacher(马拉车)学习笔记
    EXKMP学习笔记QAQ
    GDOI DAY1游记
    GDOI--DAY2 游记
    caioj:1348: [NOIP普及组2012]质因数分解 C++
  • 原文地址:https://www.cnblogs.com/wanglonghai/p/4877076.html
Copyright © 2011-2022 走看看