zoukankan      html  css  js  c++  java
  • 动手动脑

    如果类提供了一个自定义的构造方法,系统不再提供默认的构造方法。

    2.public static void main(String[] args) {
            
            InitializeBlockClass obj=new InitializeBlockClass();
            System.out.println(obj.field);
            
            obj=new InitializeBlockClass(300);
            System.out.println(obj.field);
        }

    }

    Java进行初始化的地方有两个:初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块。

    静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。

    如果在主函数中创建对象时没有形参时,如果在类中定义了公共的变量并给与了赋值,那么就会把值赋给主函数中的变量,再调用类中的默认构造函数,

    如果在主函数中创建对象时有形参,则调用类中对应的构造函数。

    3.class Root

     
    {
     
             static{
     
                      System.out.println("Root的静态初始化块");
     
             }
     
             {
     
                      System.out.println("Root的普通初始化块");
     
             }
     
             public Root()
     
             {
     
                      System.out.println("Root的无参数的构造器");
     
             }
     
    }
     
    class Mid extends Root
     
    {
     
             static{
     
                      System.out.println("Mid的静态初始化块");
     
             }
     
             {
     
                      System.out.println("Mid的普通初始化块");
     
             }
     
             public Mid()
     
             {
     
                      System.out.println("Mid的无参数的构造器");
     
             }
     
             public Mid(String msg)
     
             {
     
                      //通过this调用同一类中重载的构造器
     
                      this();
     
                      System.out.println("Mid的带参数构造器,其参数值:" + msg);
     
             }
     
    }
    class Leaf extends Mid
     
    {
     
             static{
     
                      System.out.println("Leaf的静态初始化块");
     
             }
     
             {
     
                      System.out.println("Leaf的普通初始化块");
     
             }     
     
             public Leaf()
     
             {
                      super("Java初始化顺序演示");
                      System.out.println("执行Leaf的构造器");
             }
    }
     
      
     
    public class TestStaticInitializeBlock
     
    {
     
             public static void main(String[] args)
     
             {
     
                      new Leaf();
     
             }
     
    }
     

    静态初始化块的执行顺序:

    1.静态初始化块只执行一次。

    2.创建子类型的对象时,也会导致父类型的静态初始化块的执行。

    4,
    数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。
    5.public class InitializeBlockClass {
        {field=200;}
        public int field=100;
        public InitializeBlockClass(int value) {
            this.field=value;
        }
     
        public InitializeBlockClass() {
             
        }
    }
    public class obj {
        public static void main(String[] args) {
            InitializeBlockClass obj=new InitializeBlockClass();
            System.out.println(obj.field);
            obj=new InitializeBlockClass(300);
            System.out.println(obj.field);
        }
     
    }
    结果为:100 300
  • 相关阅读:
    java例程练习(简单的画图程序[鼠标事件处理])
    java例程练习(事件监听机制)
    java例程练习(布局管理器[FlowLayout])
    java例程练习(网络编程[简单UDP通信试验])
    java例程练习(BorderLayou&GridLayout)
    java例程练习(关于内部类的一个非常重要的作用)
    java例程练习(Graphics类[paint()方法])
    java例程练习(TextField)
    Service Broker 常见问题
    ubuntu8.04 和 Fedora 9
  • 原文地址:https://www.cnblogs.com/yishaui/p/9825863.html
Copyright © 2011-2022 走看看