zoukankan      html  css  js  c++  java
  • Java中普通代码块,构造代码块,静态代码块区别及代码示例

    原文转载自:http://www.cnblogs.com/sophine/p/3531282.html

    镜像博文:http://www.cnblogs.com/DreamDrive/p/5422705.html

    http://www.cnblogs.com/DreamDrive/p/5422698.html

    //执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。

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

    1 普通代码块

     1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”
     2 public class GeneralCodeBlock01{
     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   }

    打印输出:

    1,普通代码块内的变量x=3
    主方法内的变量x=1
    2,普通代码块内的变量y=7

    2.构造代码块

     1 //构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。
     2 //构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。
     3 
     4 public class ConstructorCodeBlock02 {
     5     {
     6         System.out.println("第一代码块");
     7     }
     8 
     9     public ConstructorCodeBlock02() {
    10         System.out.println("构造方法");
    11     }
    12 
    13     {
    14         System.out.println("第二构造块");
    15     }
    16 
    17     public static void main(String[] args) {
    18         new ConstructorCodeBlock02();
    19     }
    20 }

    打印输出:

    第一代码块
    第二构造块
    构造方法

    3.态代码块:

     1 //静态代码块:在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。
     2 //每个静态代码块只会执行一次。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
     3 //如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。
     4 //注意:1 静态代码块不能存在于任何方法体内。2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。
     5 
     6 class Code {
     7     {
     8         System.out.println("Code的构造块");
     9     }
    10 
    11     static {
    12         System.out.println("Code的静态代码块");
    13     }
    14 
    15     public Code() {
    16         System.out.println("Code的构造方法");
    17     }
    18 }
    19 
    20 public class StaticCodeBlock03 {
    21     {
    22         System.out.println("CodeBlock03的构造块");
    23     }
    24 
    25     static {
    26         System.out.println("CodeBlock03的静态代码块");
    27     }
    28 
    29     public StaticCodeBlock03() {
    30         System.out.println("CodeBlock03的构造方法");
    31     }
    32 
    33     public static void main(String[] args) {
    34         System.out.println("CodeBlock03的主方法");
    35         new Code();
    36         new StaticCodeBlock03();
    37     }
    38 }

    打印输出:

    CodeBlock03的静态代码块
    CodeBlock03的主方法
    Code的静态代码块
    Code的构造块
    Code的构造方法
    CodeBlock03的构造块
    CodeBlock03的构造方法

    //=================================================

    此外Java中还有一个同步代码块....

  • 相关阅读:
    K近邻法
    感知机
    统计学习(统计机器)方法概论
    查看GPU占用率以及指定GPU加速程序
    HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL DEEP CONVOLUTIONAL NEURAL NETWORK阅读笔记
    LRN(local response normalization--局部响应标准化)
    A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK文章笔记
    徒步橘子洲
    高薪
    协作
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/5413408.html
Copyright © 2011-2022 走看看