zoukankan      html  css  js  c++  java
  • java中的代码块

    java中的代码块一共分为以下几种:普通代码块、构造代码块、静态代码块

    一、普通代码块

      首先从位置上来说,普通代码块是放在方法中的,普通代码块的执行也是按照代码书写顺序进行执行的,使用代码块可以解决当前方法中变量名重复的问题,

      当你想要在一个方法中多次使用同一个变量名,并且互不影响,这时就可以将该变量放入普通代码块中。

    public static void main(String[] args){
    		 
    	System.out.println("主方法输出");
    	{
    	   System.out.println("普通代码块输出");
    	}	 
     }
    

      输出结果如下:

      

     二、构造代码块

      首先从位置上来说,构造代码块是放在类中的,构造代码块是先于构造方法(无论是有参还是无参)执行的,每次创建对象时,构造代码块就会执行一次。

    public CodeBlockDemo(){
    		 System.out.println("构造方法输出");
    	 }
    	 
    	 //构造代码块
    	 {
    		 System.out.println("构造代码块输出...");
    	 }
    	 
    	 public static void main(String[] args){
    		 
    		 //创建对象1
    		 CodeBlockDemo codeBlockDemo1 = new CodeBlockDemo();
    		 //创建对象2
    		 CodeBlockDemo codeBlockDemo2 = new CodeBlockDemo();
    		 System.out.println("主方法输出");
    		 {
    			 System.out.println("普通代码块输出");
    		 }
    		 System.out.println("===================");
    		 
    	 } 
    

      输出结果如下:

      

       根据结果我们可以看出,每次在创建对象时,构造代码块都会执行一次,并且比构造方法优先执行。

      经反编译工具后如下:

      

       通过这里我们可以看出,构造代码块中的内容全部都放在构造方法中了,所以会每次创建对象时,都会执行构造代码块,然后再执行构造方法中的内容。

    三、静态代码块

      从位置上来说,静态代码块与构造代码块放的位置一样,都是放在类中,但是静态代码块是使用static关键字修饰的代码块。静态代码块是在类加载的时候执行,

      并且只会只能执行一次,跟创建不创建对象无关。

    public CodeBlockDemo(){
    		 System.out.println("构造方法输出");
    	 }
    	 
    	 //静态代码块
    	 static {
    		 System.out.println("静态代码块输出...");
    	 }
    	 
    	 public static void main(String[] args){
    		 
    		 System.out.println("主方法输出");
    		 System.out.println("===================");
    		 
    	 }
    

      输出结果如下:

      

     四、下面我们来总结一下普通代码块、构造代码块以及静态代码块的执行顺序

    public CodeBlockDemo(){
    		 System.out.println("构造方法输出");
    	 }
    	 
    	 //构造代码块
    	 {
    		 System.out.println("构造代码块输出...");
    	 }
    	 
    	 //静态代码块
    	 static {
    		 System.out.println("静态代码块输出...");
    	 }
    	 
    	 public static void main(String[] args){
    		 
    		 //创建对象1
    		 CodeBlockDemo codeBlockDemo1 = new CodeBlockDemo();
    		 //创建对象2
    		 CodeBlockDemo codeBlockDemo2 = new CodeBlockDemo();
    		 System.out.println("主方法输出");
    		 {
    			 System.out.println("普通代码块输出");
    		 }
    		 System.out.println("===================");
    		 
    	 }
    

      输出结果如下:

      

       从以上输出结果中我们可以得到以下结论:静态代码块是再类加载的时候执行,执行优先级最高,构造代码块是在创建对象时执行,

      并且每次创建对象的时候都会执行,优于构造方法执行,普通代码块放在方法中,按照书写顺序执行。

      所以运行优先级从高到低为:静态代码块 > 构造代码块 > 构造方法 > 普通代码块

      

      

      

  • 相关阅读:
    无密码登录Linux
    php生成压缩包
    验证数字的正则表达式集
    初识MEF
    实现Linq.Distinct方法
    《Windows Internal》(2)
    《Windows Internals》(1)
    使用MEF宿主在一个应用程序上
    mysql错误记录集合
    python基本知识之数据类型
  • 原文地址:https://www.cnblogs.com/li666/p/11889663.html
Copyright © 2011-2022 走看看