zoukankan      html  css  js  c++  java
  • java数据域初始化

    1、在声明中赋值

    /**
     * Created by N3verL4nd on 2016/11/19.
     */
    
    class Test{
        private String str = "Hello World";
        public void show(){
            System.out.println(str);
        }
    }
    
    public class HelloWorld {
        public static void main(String[] args) {
            Test t = new Test();
            t.show();
        }
    }

    2、在构造器中设置值

    /**
     * Created by N3verL4nd on 2016/11/19.
     */
    
    class Test{
        private String str;
        Test(){
            str = new String("Hello World");
        }
        public void show(){
            System.out.println(str);
        }
    }
    
    public class HelloWorld {
        public static void main(String[] args) {
            Test t = new Test();
            t.show();
        }
    }

    3、使用初始化块

    /**
     * Created by N3verL4nd on 2016/11/19.
     */
    
    class Test{
        private String str;
        {
            str = new String("Hello World");
        }
        public void show(){
            System.out.println(str);
        }
    }
    
    public class HelloWorld {
        public static void main(String[] args) {
            Test t = new Test();
            t.show();
        }
    }
    
    只要构造类的对象,初始化块就会被执行。

    /**
     * Created by N3verL4nd on 2016/11/19.
     */
    
    class Test{
        {
            str = new String("111");
        }
        private String str = "222";
        Test(){
            str = new String("333");
        }
        public void show(){
            System.out.println(str);
        }
    }
    
    public class HelloWorld {
        public static void main(String[] args) {
            Test t = new Test();
            t.show();
        }
    }
    
    以上代码,调整初始化顺序,单步调试发现,构造函数最后被执行。

    在声明中赋值与在初始化块中设置值则按照顺序执行。

    /**
     * Created by N3verL4nd on 2016/11/19.
     */
    
    class Test{
        Test(){
            str = new String("333");
        }
    
        {
            str = new String("111");
        }
        private String str = "222";
    
        static {
            System.out.println(555);
        }
    
        public void show(){
            System.out.println(str);
        }
    }
    
    public class HelloWorld {
        public static void main(String[] args) {
            Test t = new Test();
            t.show();
        }
    }
    
    static块在类加载的时候被执行,也就是优先于main函数执行。顺序:进入main函数-->static块-->返回main函数。

    无main函数的Hello World

    public class HelloWorld {
        static {
            System.out.println("Hello World");
            System.exit(0);
        }
        /*public static void main(String[] args) {
            Test t = new Test();
            t.show();
        }*/
    }




    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    编写一个函数func(),将此函数的输入参数(int型)逆序输出显示,如54321 –> 12345,要求使用递归,并且函数体代码不超过8行
    java中两种单例模式
    springMVC配置freemarker 二(问题讨论篇)
    springMVC配置freemarker
    java中@value的环境配置
    java环境log4j日志环境的配置。
    websocket协议
    http报文和浏览器缓存机制
    详解网络连接
    编码总结
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/6616297.html
Copyright © 2011-2022 走看看