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

    代码块指的是使用"{}"括起来的一段代码,根据代码块存在的位置可以分为4种:

    普通代码块;

    构造代码块;

    静态代码块;

    同步代码块(线程同步的时候讲解)

    代码块里变量的作用域:

    只在自己所在区域(前后的{})内有效;

    普通代码块:

    普通代码块就是直接定义在方法或语句中定义的代码块:

    public void show(){

    普通代码块

    }

    构造代码块:

    直接写在类中的代码块:

    优先于构造方法执行,每次实例化对象之前都会执行构造代码块。

    Eg:

    public class Demo {

        {

                 System.out.println("我是构造代码块");

        }

        public Demo(){

                  System.out.println("我是构造方法");

        }

        public static void main(String[] args) {

                 Demo d1  = new Demo();

                 Demo d2  = new Demo();

        }

    }

    静态代码块

    使用static 修饰的构造代码块:

    优先于主方法执行,优先于构造代码块执行,不管有创建多少对象,静态代码块只执行一次,可用于给静态变量赋值;

    Eg:

    package reviewDemo;

    /**

     * 测试各代码块的优先级

     *  优先级顺序:静态代码块  > 构造代码块 > 普通代码块

     *  备注:无论创建几个对象,静态代码块只执行一次!

     */

    public class Demo13 {

        Demo13(){

            System.out.println("我是构造方法!");

        }

        {

            System.out.println("我是构造代码块!");//实例化对象的时候才会去调用!

        }

        static{

            System.out.println("我是静态代码块!");

        }

       

        public static void main(String[] args) {

            new Demo13();

            new Demo13();//再次创建对象,证明无论创建几次对象,静态代码块都只执行一次

            System.out.println("我是普通代码块!");

        }

    }

    输出:

    我是静态代码块!

    我是构造代码块!

    我是构造方法!

    我是构造代码块!

    我是构造方法!

    我是普通代码块!

    我的总结:这个例子非常好!

  • 相关阅读:
    Hadoop(十六)之使用Combiner优化MapReduce
    Hadoop(十五)MapReduce程序实例
    Hadoop(十四)MapReduce原理分析
    STM32新的IDE -- stm32cubeIde 点亮个LED灯
    resin+spring-websocket 深坑
    spring Websocket 报 No suitab le default RequestUpgradeStrategy found
    nginx代理内网域名碰到的坑
    Showing Recent Issues clang: error: linker command failed with exit code 1 (use -v to see invocatio
    sublime安装插件步骤
    tomcat7 ajax请求服务中文乱码
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11131544.html
Copyright © 2011-2022 走看看