• static详谈


    Static

    静态代码块:

    static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

    静态成员变量:

    静态成员变量对所有对象所共享的,在内存中只有一个副本。只初始化一次。

    静态方法:

    静态方法中只能调用静态方法和静态的成员变量 ,在静态方法中不能使用this关键字,因为它是不需要构造对象就能直接访问的,而this表示的是一个对象。

    实例:

    package cn.com.net;
    
    public class Z extends X{
        Y y=new Y();
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            System.out.println("--start main-----");
            new Z();
            System.out.println("--end main-----");
        }
    Z(){
        System.out.println("Z");
    }
    {
        System.out.println("方法Z");
    }
    static{
        System.out.println("staticZ");
    }
    }
    class X{
        X(){
            System.out.println("X");
        }
        
        {
            System.out.println("方法X");
        }
        static{
            System.out.println("staticX");
        }
        Y y=new Y();
    }
    class Y{
        
        Y(){
            System.out.println("Y");
        }
        {
            System.out.println("方法Y");
        }
        static{
            System.out.println("staticY");
        }
    }

    运行结果:

    staticX
    staticZ
    --start main-----
    方法X
    staticY
    方法Y
    Y
    X
    方法Y
    Y
    方法Z
    Z
    --end main-----

     由结果分析可知在运行main方法后,将要加载类Z,后发现继承了X就先去加载X,静态代码块先被加载,然后装载Z,Z的静态代码块也被加载,接着按顺序初始化成员,最后运行构造函数。先父后子,先static,成员变量从上到下,最后构造函数。

  • 相关阅读:
    安装mysql
    date, Calendar
    心态
    jdbc ---- DBUTilDao 类
    jdbc--------JdbcUtilDao 类
    Python与C/C++相互调用
    用链表和数组实现HASH表,几种碰撞冲突解决方法
    用链表实现消息队列
    文件系统的发展
    [深度学习]开源的深度学习框架
  • 原文地址:https://www.cnblogs.com/jing58/p/6001109.html
Copyright © 2020-2023  润新知