zoukankan      html  css  js  c++  java
  • 关于构造代码块、局部代码块和静态代码块的作用和区别

    构造代码块:

      直接在类中定义且没有加static关键字的代码块称为{}构造代码;

      作用:给对象统一初始化数据

    public class Demo1 {
        public static void main(String[] args) {
            Test test = new Test(3);  //构造代码块会在构造函数被调用时执行, 且在这个例子中比"this.id=id;"语句先执行,作用是给对象统一初始化数据;
            System.out.println(test);
        }
    }
    
    class Test{
        int id;
        String name;
        
        {
            this.id= 5;
            this.name = "测试";
            System.out.println("这是构造代码块");
        }
        
        Test(int id){
            this.id = id;
        }
        
        public String toString(){
            
            return "name: "+this.name +"  ,   "+"id: "+ this.id ;
                
        }
    }

     以下例子统计了所有构造函数一共被调用了多少次(构造代码块的使用)

     1 public class Demo1 {
     2     public static void main(String[] args) {
     3         
     4         new Test();
     5         new Test();
     6         new Test(3);
     7         new Test();
     8         new Test(5);
     9         Test.count();
    10         
    11     }
    12 }
    13 
    14 class Test{
    15     int id;
    16     String name;
    17     static int sum = 0;
    18     {
    19         sum += 1;
    20     }
    21     
    22     Test(){
    23         
    24     }
    25     
    26     Test(int id){
    27         
    28     }
    29     
    30     static void count(){
    31         System.out.println(sum);
    32     }
    33     
    34 }

    构造代码块注意点:
      1:java编译器编译java类时,会先将成员属性的声明放到类的前端

      2:成员变量的初始化工作放到构造函数中

      3:如果类中有构造代码块,java编译器在编译时会先将构造代码块中的代码移到构造函数中执行,
             构造函数中原有的代码最后执行
           
      4:成员属性的初始化和构造代码块的执行顺序是根据原码中的位置执行

    局部代码块:

    在函数中的代码块、

    作用:在方法中,如果要缩短变量的寿命,可以使用

         方法中,某段代码之后,都不再使用某个变量(这个变量有可能是一个很大的Map集合,很占内存),则可以将其定义到局部代码块中,及时结束其生命周期,释放空间!

    public class Demo1 {
        public static void main(String[] args) {
            Test test = new Test();
            test.run();
        }
    }
    
    class Test{
        int id;
        String name;
        
        void run(){
            
            {
                
                for(int i = 0;i < 3; i++){
                    System.out.println(i);
                }
                
                System.out.println("我是局部代码块,变量i出了局部代码块就没有任何作用");
            }
            
            System.out.println("我是普通函数");
        }
        
    }

    静态代码块:

    在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。
    由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
    注意:1 静态代码块不能存在于任何方法体内。2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。
    public class Demo1 {
        public static void main(String[] args) {
            
            new Test();
            
        }
    }
    
    class Test{
        int id;
        String name;
        
        static{
            System.out.println("我是静态代码块");
        }
        
    }
  • 相关阅读:
    如何去除电脑上软件图标的快捷键小箭头
    三维地图如何加载gltf数据代码
    实时获取三维地图相机角度,改变三维观赏角度
    完美解决win10家庭版本系统无法远程连接问题
    svn提交批量选中文件
    oracle sql developer 如何支持多个窗体,打开多张表,多个tab,同时查看多个数据表
    sqldevelper批量导出sql文件
    原生javascript与jquery的区别(持续记录)
    iframs里子,孙页面与父,爷页面,以及多层嵌套的iframe中,js变量,方法以及元素的互相获取,调用
    Eclipse如何将多行注释的星号去掉
  • 原文地址:https://www.cnblogs.com/uoar/p/7123040.html
Copyright © 2011-2022 走看看