zoukankan      html  css  js  c++  java
  • java构造函数,java的静态块理解

    今天我遇到这样的代码块,理解甚久,现在理解了,举一些例题给你看看

    先创建一个One类:

    package accp.com;
    /**
    * 其中一个类
    * @author xuxiaohua
    *
    */
    public class One {
      public One(String str){ //定一个构造函数
        System.out.println(str);
      }
    }

    再创建一个Two类:

    package accp.com;

    public class Two {
      One one=new One("one1");
      One one2=new One("one2");
      static One one3=new One("one3");//为什么这句话只执行了一次,是因为静态块只执行一次,是从java虚拟机开始加载的时候
      public Two(String str){
      System.out.println(str);
      }

    }

    然后编写测试类:

    package accp.com;

    public class Test {
      static Two two = new Two("two");//静态块是java加载时最先走的方法,所以这句话无论放在哪里,都先走的静态方法
    public static void main(String args[]){
      Two t=new Two("two2");
      System.out.println("开始main方法=========");
      Two tw=new Two("two3");
      System.out.println("执行完毕。");
      }
    }

    运行结果为:

    one3------解释:静态块先执行,所以自然走到Two类中,然后Two类中也存在static One one3=new One("one3");静态的,所以先走这句话了。
    one1------解释:测试类中,static Two two = new Two("two");中的Two two 是定义,所以先走定义的类Two然后执行里面的方法,注意不会出现one3了,因为静态块只执行一次
    one2
    two----解释:static Two two = new Two("two");前面的定义走完之后就走new Two("two");实例化对象,输出two
    one1---解释:Two t=new Two("two2");跟上面一样,先看前半部分,Two t是定义变量,所以走Two中的方法,但不会执行静态块了,原因已说了,是因为静态块只执行一次。好了,前部分定义看完了,接着看实例化后半部分:new Two("two2");,实例化对象,然后输出two2
    one2
    two2
    开始main方法=========//这几句话没啥可解释的吧!
    one1------解释:理由同上
    one2
    two3
    执行完毕。

    最后总结那么几句:要想看明白,你需要理解静态块和构造函数,还有定义和实例化。

    Two two;//这属于在定义一个变量

    new Two();//属于在实例化Two对象,Two two=new Two();//合起来就是定义和实例化对象。

    其次就是静态块了,静态块是在java加载的时候只运行一次的,并且是先执行的代码块。

    学如逆水行舟,不进则退。

    时间,请带我像一条小溪流般,安静地流淌,汇入爱的海洋。
  • 相关阅读:
    寄存器(内存访问)知识整理
    寄存器知识点
    汇编语言之实验一
    汇编语言基础知识的总结
    汇编语言之第五章至第八章知识汇总
    汇编实验之第八章数据处理的两个基本问题
    汇编语言之第七章更灵活的定位内存地址的方法
    汇编语言之实验九
    汇编语言之第六章包含多个段的程序
    汇编语言之第五章【BX】和loop指令
  • 原文地址:https://www.cnblogs.com/1246447850qqcom/p/3945820.html
Copyright © 2011-2022 走看看