zoukankan      html  css  js  c++  java
  • 菜鸡的Java笔记 第十八

    代码块  code block
                
        content (内容)
            在程序结构之中使用“{}”定义的内容就称为代码块,但是会根据其声明的位置以及关键字的不同
            代码块一共分为四种:
                普通代码块(程序块),构造块,静态块,同步代码块(多线程)
                
            一:普通代码块
                普通代码块是定义在方法之中的代码块,其基本形式参考如下:

    public class CodeBlock{
        public static void main(String args[]){
            { // 普通代码块
                int x = 10;
                System.out.println(x);
            }
        }
    }                

                    如果现在一个方法代码很长的时候,你又怕重名变量定义,那么可以考虑使用普通代码块(java 方法一般都比较短)
                    
            二:构造块:
                构造块指的是定义在类中间的结构
                
                范例:定义一个构造块

    class Member{
        {
            System.out.println("------构造块------");
        }
        public Member(){ //构造方法
            System.out.println("++++++++构造方法++++++++");
        }
    }
    public class CodeBlock{
        public static void main(String args[]){
            new Member();
            new Member();
        }
    }

                    构造块优先于构造方法执行,并且每一次对象实例化的时候都会执行构造块中的代码
                    构造块允许定义多个,按照顺序执行(然并卵)
                    
            三:静态代码块
                静态块定义在一个类之中代码块,但是其必须使用 static 关键字来进行定义,对于静态块需要考虑两种情况:
                    在主类中定义,不再主类中定义
                
                范例:在非主类中定义静态块

    class Member{
        {
            System.out.println("------构造块------");
        }
        static{
            System.out.println("------静态块------");
        }
        public Member(){ //构造方法
            System.out.println("++++++++构造方法++++++++");
        }
    }
    public class CodeBlock{
        public static void main(String args[]){
            new Member();
            new Member();
        }
    }                

                    静态块优先于构造块执行,而且不管有多少个实例化对象,静态块只执行一次,静态块的主要作用是为了 static 属性初始化

    class Member{
        private static String uli; // static 属性
        {
            System.out.println("------构造块------");
        }
        static{
            uli = “++++++++”; // 为 static属性赋值
            System.out.println("------静态块------");
        }
        public Member(){ //构造方法
            System.out.println("++++++++构造方法++++++++");
        }
    }
    public class CodeBlock{
        public static void main(String args[]){
            new Member();
            new Member();
        }
    }

                   
                另外静态块也可以定义在主类之中

    public class CodeBlock{
        static{
            System.out.println("+++++++++++++++++");
        }
        public static void main(String args[]){
            System.out.println("fffffffffffffffffffff");
        }
    }

                    静态块的执行优先级在主方法之前执行


  • 相关阅读:
    asp.net导出数据到execl并保存到本地 不需要调用Office组件
    动态创建DataTable,GridView创建多表头,表头跨行或跨列合并,创建计算列及列内容自适应等
    Oracle内置SQL函数收集整理大全
    无比强大的GridView,表头固定,表体有滚动条可滚动
    很不错的asp.net文件上传类c# 搜索文件 移动文件 删除文件等
    【备用】非常不错的ASP操作数据库类,支持多数据库MSSQL,ACCESS,ORACLE,MYSQL等
    Asp.Net读取Execl常见问题收集
    经常用到的交叉表问题,一般用动态SQL能生成动态列
    C# asp.net中常见的字符串处理函数及数字格式化
    比较两个DataTable中不同的记录,且合并两个DataTable的列显示,有图
  • 原文地址:https://www.cnblogs.com/mysterious-killer/p/10065959.html
Copyright © 2011-2022 走看看