• Java 有关类字段的初始化


    实例代码

    package text;
    
    
    public class MethodOverload {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            
            InitializeBlockClass obj=new InitializeBlockClass();
            System.out.println(obj.field);
            
            obj=new InitializeBlockClass(300);
            System.out.println(obj.field);
        }
    
    }
    
    class InitializeBlockClass{
        //下面这句在初始化块之前与之后,会影响到field字段的初始值
        //public int field=100;
        
        {
            field=200;
        }
        public int field=100;
        public InitializeBlockClass(int value){
            this.field=value;
        }
        public InitializeBlockClass(){
            
        }
    }

    运行结果

    规律(类字段的初始化顺序)

    1、执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

    2、执行类的构造函数。

    类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。

    以下代码为何无法通过编译?哪儿出错了?

    public class Test {
    
            public static void main(String[] args) {
    
                Foo obj1 = new Foo();
    
            }
    
        }
    
        class Foo {
    
            int value;
    
            public Foo (int initValue) {
    
            value = initValue;
    
            }
        }

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

  • 相关阅读:
    第一节 软件测试概述(2)
    第一节 软件测试概述(1)
    Sql语句,查询效率
    Js cdn 学习
    Java内部类详解
    UML用例图
    UML类图几种关系的总结
    JFinal框架_定时触发程序
    利用EXCEL函数LINEST进行统计学中的回归分析
    Windows 10 64 Bit 编译安装 PyLucene 8.3.0
  • 原文地址:https://www.cnblogs.com/leity/p/9824110.html
Copyright © 2020-2023  润新知