zoukankan      html  css  js  c++  java
  • java基础知识系列---普通代码块、构造代码块、静态代码块

    //执行顺序:(优先级从高到低。)

    静态代码块>mian方法>构造代码块>构造方法。

    其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。

    1 普通代码块

    复制代码
     1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”
     2 public class CodeBlock01{
     3       public static void main(String[] args){
     4           
     5             {
     6               int x=3;
     7               System.out.println("1,普通代码块内的变量x="+x);    
     8             }
     9             
    10             int x=1;
    11             System.out.println("主方法内的变量x="+x);
    12             
    13             {
    14                int y=7;
    15                System.out.println("2,普通代码块内的变量y="+y);    
    16             }
    17           }
    18     }
    19     
    20     /*
    21     运行结果:
    22     1,普通代码块内的变量x=3
    23          主方法内的变量x=1
    24          2,普通代码块内的变量y=7
    25     */
    26     
    复制代码

    2 构造代码块

    复制代码
    //构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。
    
    public class CodeBlock02{
        {
          System.out.println("第一代码块");    
        }
        
        public CodeBlock02(){
            System.out.println("构造方法");
            }
            
            {
              System.out.println("第二构造块");
            }
          public static void main(String[] args){
              new CodeBlock02();
              new CodeBlock02();
              new CodeBlock02();
               
        }
    }    
    
    /*
    *
    执行结果:
    第一代码块
    第二构造块
    构造方法
    第一代码块
    第二构造块
    构造方法
    第一代码块
    第二构造块
    构造方法
    */
    复制代码

    3 静态代码块

    复制代码
    //静态代码块:在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
    //如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。
    //注意:1 静态代码块不能存在于任何方法体内。2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。
    
    
    class Code{
        {
          System.out.println("Code的构造块");
        }
        
        static{
            System.out.println("Code的静态代码块");
            }
            
        public Code(){
            System.out.println("Code的构造方法");
            }
        }
        
        
    public class CodeBlock03{
         {
          System.out.println("CodeBlock03的构造块");    
         }
         
         static{
            System.out.println("CodeBlock03的静态代码块");
            }
            
            public CodeBlock03(){
                 System.out.println("CodeBlock03的构造方法");
                }
            
          public static void main(String[] args){
                System.out.println("CodeBlock03的主方法");
                new Code();
                new Code();
                new CodeBlock03();
                new CodeBlock03();
              }
        }
    /*
    CodeBlock03的静态代码块
    CodeBlock03的主方法
    Code的静态代码块
    Code的构造块
    Code的构造方法
    Code的构造块
    Code的构造方法
    CodeBlock03的构造块
    CodeBlock03的构造方法
    CodeBlock03的构造块
    CodeBlock03的构造方法
    */

    转自:http://www.cnblogs.com/sophine/p/3531282.html
  • 相关阅读:
    flume sink两种类型 file_rool 自定义sing com.mycomm.MySink even if there is only one event, the event has to be sent in an array
    为什么引入进程20年后,又引入线程?
    As of Flume 1.4.0, Avro is the default RPC protocol.
    Google Protocol Buffer 的使用和原理
    Log4j 2
    统一日志 统一订单
    网站行为跟踪 Website Activity Tracking Log Aggregation 日志聚合 In comparison to log-centric systems like Scribe or Flume
    Percolator
    友盟吴磊:移动大数据平台的架构、实践与数据增值
    Twitter的RPC框架Finagle简介
  • 原文地址:https://www.cnblogs.com/myadmin/p/5159431.html
Copyright © 2011-2022 走看看