zoukankan      html  css  js  c++  java
  • Java 静态代码块和实例代码块

    静态代码块的使用

    示例一:

    public class StaticTest03{
        static{
            System.out.println("A");
        }
        static{
            System.out.println("B");
        }
        public static void main(String[] args){
            System.out.println("hello");
        }
        static{
            System.out.println("C");
        }
    }

    执行结果:

    静态代码块优先于main方法执行,在类加载时执行,只执行一次(这一点不同于构造方法,不用在每次创建对象时执行);
    静态代码块自上而下的执行
    具体的业务中:
    可以把记录日志的代码写到静态代码块中,只要时类加载了,记录类加载的信息

     示例二:

    public class StaticTest04{
        static int i = 12;     //静态变量
        int j = 11;    //实例变量,在调用构造方法时才会开辟内存空间
        static{
            System.out.println("i = " + i);   //静态代码块可以直接访问静态变量,都是在类加载的时候执行;
            //System.out.println("j = " + j);  //错误:无法从静态上下文中引用非静态 变量 j
            System.out.println("x = " + x);    //错误: 非法前向引用
        }
        static int x = 21;
        public static void main(String[] args){
            System.out.println("main method");
        }
    }

    结论:

    1. 静态代码块可以直接访问静态变量,都是在类加载时执行;

    2. 静态代码不能直接访问实例变量,实例变量是在构造方法调用时开辟内存空间,和静态代码不在同一时期;

    3. 静态代码块执行遵循自上而下的顺序执行,在静态代码块下的变量,不能直接访问;

    实例代码块:

    示例:

    public class InstanceTest{
        public static void main(String[] args){
            new InstanceTest();
            new InstanceTest();
            new InstanceTest("str");
            new InstanceTest("str");
        }
        {
            System.out.println("实例代码块");       //实例代码块
        }
        public InstanceTest(){
            System.out.println("无参数构造函数");
        }
        
        public InstanceTest(String a){
            System.out.println("有参数构造函数");
        }
    }

    结论:

     1. 实例代码块的格式是大括号内加代码片段;

     2. 实例代码块在每次创建对象调用构造函数之前调用;

     3. 实例代码块可能使用的场景,如果有多个构造函数,且多个构造函数前面的代码片段相同,可以考虑把这些相同的片段写到实例代码块中;

  • 相关阅读:
    1111实验二 作业调度模拟实验
    1006实验一实验报告
    0909对操作系统的认识
    南阳OJ-138 找球号(二)(hash表应用)
    南阳OJ-38 布线问题(最小生成树应用_prim)
    插入排序
    南阳OJ-756 重建二叉树(二叉树的中序遍历和后序遍历求先序遍历)
    南阳OJ-63 小猴子下落(数据结构-二叉树)
    UVA OJ-11095 Maximum Product(暴力求解法)
    UVA OJ-725 Division (暴力求解法)
  • 原文地址:https://www.cnblogs.com/homle/p/14181852.html
Copyright © 2011-2022 走看看