• 从头认识java-4.7 构造器初始化(3)


    接着上一章节。

    (4)显性初始化静态域

    通过静态代码块来初始化某些属性域。

    package com.ray.testobject;
    
    public class Test {
    	private static int id;
    
    	private static String name;
    
    	static {
    		id = 0;
    		name = "abc";
    		System.out.println("id:" + id);
    		System.out.println("name:" + name);
    	}
    
    	public static int getId() {
    		return id;
    	}
    
    	public static void main(String[] args) {
    		// new Test();
    		System.out.println(Test.getId());
    	}
    }
    

    如果我们把new Test()放开,得到也是下面的结果。因为代码块只会执行一次。


    输出:

    id:0
    name:abc
    0

    我们下面在给一个例子:

    package com.ray.testobject;
    
    public class Test {
    
    	private static int id = 0;
    	private static String name;
    
    	static {
    		System.out.println("id:" + id);
    		name = "abc";
    		System.out.println("name:" + name);
    	}
    
    	public Test() {
    		System.out.println("create Test");
    	}
    
    	public static void main(String[] args) {
    		new Test();
    		new Test();
    	}
    }
    


    输出:

    id:0
    name:abc
    create Test
    create Test

    (5)初始化非静态域

    package com.ray.testobject;
    
    public class Test {
    
    	private String name;
    
    	{
    		name = "abc";
    		System.out.println("name:" + name);
    	}
    
    	public static void main(String[] args) {
    		new Test();
    		new Test();
    	}
    }
    


    输出:

    name:abc
    name:abc

    初始化非静态域,每一次的new,代码块都会执行一次。

    总结:这一章节主要讨论了显性初始化静态域,以及初始化非静态域。

    这一章节就到这里,谢谢。

    -----------------------------------

    目录

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    github.com/dotnet/orleans
    C#开源
    Windows Server 2016正式版14393英文版ISO镜像下载:_X64FRE_ZH-CN.ISO
    Windows Server 2016
    功能更新到 Windows 10 企业版, 版本 1607
    Load Audio or Vedio files
    Socket.Available 属性
    CaptureManagerSDK
    Net.Sockets
    Solid Edge如何制作装配体的剖视图
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944471.html
Copyright © 2020-2023  润新知