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
  • 相关阅读:
    Online Conversion Advanced Roman Numeral Converter
    如何对CentOS FTP服务配置 51CTO.COM
    [CPyUG][OT]为什么mysqlpython 2010年以后未见更新啊. maolingzhi@gmail.com Gmail
    专业的智能解析 WEB DDOS防御提供商
    深入了解scanf()/getchar()/gets()/getch,getche sunysl的专栏 博客频道 CSDN.NET
    they're hiring
    linux下绘图工具dia,功能强劲直逼visio 潜入技术的海洋 51CTO技术博客
    北京网通dns地址服务器大全 产品/方案 net.ChinaUnix.net
    北京光环新网科技股份有限公司 IDC,ISP,CDN,专线,托管,机房,数据中心,光纤接入
    lighttpd,thttpd,shttpd 轻量级WebServer介绍
  • 原文地址:https://www.cnblogs.com/yishaui/p/9825863.html
Copyright © 2011-2022 走看看