• 动手动脑三


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

    2

      1 .public static void main(String[] args) {
      2         
      3         InitializeBlockClass obj=new InitializeBlockClass();
      4         System.out.println(obj.field);
      5         
      6         obj=new InitializeBlockClass(300);
      7         System.out.println(obj.field);
      8     }
      9 }
     10  
     11 Java进行初始化的地方有两个:初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块。
     12 静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。
     13 如果在主函数中创建对象时没有形参时,如果在类中定义了公共的变量并给与了赋值,那么就会把值赋给主函数中的变量,再调用类中的默认构造函数,
     14 如果在主函数中创建对象时有形参,则调用类中对应的构造函数。
     15 3.class Root
     16  
     17 {
     18  
     19          static{
     20  
     21                   System.out.println("Root的静态初始化块");
     22  
     23          }
     24  
     25          {
     26  
     27                   System.out.println("Root的普通初始化块");
     28  
     29          }
     30  
     31          public Root()
     32  
     33          {
     34  
     35                   System.out.println("Root的无参数的构造器");
     36  
     37          }
     38  
     39 }
     40  
     41 class Mid extends Root
     42  
     43 {
     44  
     45          static{
     46  
     47                   System.out.println("Mid的静态初始化块");
     48  
     49          }
     50  
     51          {
     52  
     53                   System.out.println("Mid的普通初始化块");
     54  
     55          }
     56  
     57          public Mid()
     58  
     59          {
     60  
     61                   System.out.println("Mid的无参数的构造器");
     62  
     63          }
     64  
     65          public Mid(String msg)
     66  
     67          {
     68  
     69                   //通过this调用同一类中重载的构造器
     70  
     71                   this();
     72  
     73                   System.out.println("Mid的带参数构造器,其参数值:" + msg);
     74  
     75          }
     76  
     77 }
     78 class Leaf extends Mid
     79  
     80 {
     81  
     82          static{
     83  
     84                   System.out.println("Leaf的静态初始化块");
     85  
     86          }
     87  
     88          {
     89  
     90                   System.out.println("Leaf的普通初始化块");
     91  
     92          }     
     93  
     94          public Leaf()
     95  
     96          {
     97                   super("Java初始化顺序演示");
     98                   System.out.println("执行Leaf的构造器");
     99          }
    100 }
    101  
    102   
    103  
    104 public class TestStaticInitializeBlock
    105  
    106 {
    107  
    108          public static void main(String[] args)
    109  
    110          {
    111  
    112                   new Leaf();
    113  
    114          }
    115  
    116 }
     

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

    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
  • 相关阅读:
    设置页面标题title
    路由跳转,页面位置不在顶部
    PyTorch深度学习入门
    删除ubuntu后开机进入grub的解决办法
    研一上英语
    python中常用的几个函数的正确用法-lambda/filter/map/reduce
    【Python教程】 re 模块中findall() 函数返回值展现方式的用法详解
    【Python教程】5种常见字符串去除空格的操作方法
    对python中浅拷贝和深拷贝分析详细介绍
    Git使用
  • 原文地址:https://www.cnblogs.com/dinghaisheng/p/9825996.html
Copyright © 2020-2023  润新知