美文网首页
14.静态代码块

14.静态代码块

作者: 每天起床都想摆 | 来源:发表于2022-01-18 21:35 被阅读0次

static应用知识:代码块

  • 代码块是类的五大成分之一(成员变量,构造器,方法,代码块,内部类),定义在类中方法外

  • 在Java类下,使用{}括起来的代码被称为代码块

  • 代码块分类:

    • 静态代码块:

      • 格式:static{}

      • 特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发,只执行一次

      • 使用场景:在类加载的时候做一些静态数据初始化的操作,方便后续使用

        package com.java.test;
        
        public class TestDemo {
            public static String word;
        
            static{
                System.out.println("静态代码块被触发执行");
                word = "你好";  //对静态数据word完成初始化
            }
        
            public static void main(String[] args) {
                System.out.println("Hello World!");
                // sout(word); //你好(静态代码块没有赋值时为null)
            }
        }
        /*
        静态代码块被触发执行
        Hello World!
        */
        //静态代码块和类一起加载,优先级别比主方法中的内容更高
        
  • 构造代码块(又叫实例代码块):

    • 格式:{}

    • 特点:每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行

      即每次创建对象时就会优先执行一次这部分的代码,然后再执行构造器里的内容

    • 使用场景:初始化实例资源

      package com.java.test;
      
      public class TestDemo {
      
          {
              System.out.println("实例代码块被触发执行");
          }
      
          public TestDemo(){
              System.out.println("构造器被触发执行");
          }
          public static void main(String[] args) {
              System.out.println("Hello World!");
              new TestDemo(); //匿名对象,创建立即回收
      
          }
      }
      /*
      Hello World!
      实例代码块被触发执行
      构造器被触发执行
       */
       //如果给实例成员变量初始化,会导致每次访问该实例成员都会被赋上初始化的值,往往不符合现实业务逻辑需求
      

      作用上其实就是将实例代码块这部分内容从构造器中拿了出来,放回去时也会有相同的作用

  • 使用静态代码块不是必备的技术,但是会使得程序变得更加优雅

    模拟生成扑克牌:

    package com.java.cases;
    
    import java.util.ArrayList;
    
    public class StaticCodeDemo {
        /**
         * 模拟初始化牌操作
         */
        //准备一个容器,存储54张牌对象,这个容器建议使用静态的集合,因为静态的集合只加载一次
        public static ArrayList<String> cards = new ArrayList();
    
        //在游戏启动之前需要准备好54张牌放进去,使用静态代码块进行初始化
        static {
            String[] colors = {"♠", "♥", "♦", "♣"};
            String[] sizes = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
            for (int i = 0; i < sizes.length; i++) {
                for (int j = 0; j < colors.length; j++) {
                    cards.add(sizes[i] + colors[j]);
                }
            }
            cards.add("🃏");
            cards.add("🃏");
        }
    
        public static void main(String[] args) {
            System.out.println("新牌:" + cards);
        }
    }
    

相关文章

  • 14.静态代码块

    static应用知识:代码块 代码块是类的五大成分之一(成员变量,构造器,方法,代码块,内部类),定义在类中方法外...

  • Java中静态代码块,构造代码块,构造函数代码块

    Java中静态代码块,构造代码块,构造函数代码块,普通代码块 静态代码块 : static代码块指的是static...

  • 构造函数 非静态代码块 构造函数的执行顺序

    执行结果 父类--静态代码块子类--静态代码块父类--非静态代码块父类--构造函数子类--非静态代码块子类--构造函数

  • java 代码块顺序

    java 代码块的执行顺序: 静态变量 > 非静态变量静态变量 > 静态代码块 > 非静态代码块父构造 > 子构...

  • Java执行顺序

    父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函...

  • java 类的代码块加载顺序

    输出结果: 总结:父类静态代码块——子类静态代码块——父类代码块——父类构造——子类代码块——子类构造。类的静态代...

  • 猿学-java有什么用java基础技术总结

    加载顺序 父类静态成员->父类静态代码块-> 子类静态成员->子类静态代码块-> 父类普通成员->父类代码块->父...

  • java代码执行顺序

    java中首先是静态块先执行,然后非静态代码块,最后是构造函数 执行结果 父类--静态代码块子类--静态代码块父类...

  • Java类实例化时jvm执行顺序

    1.父类静态代码块:赋值b成功1.父类静态代码块:a的值12.子类静态代码块:赋值sb成功2.子类静态代码块:sa...

  • Java代码块的执行顺序

    执行顺序首先执行静态代码块接着执行构造代码块最后指向构造方法 静态代码块 >>> 构造代码块 >>>> 构造方法 ...

网友评论

      本文标题:14.静态代码块

      本文链接:https://www.haomeiwen.com/subject/pdrlhrtx.html