Java中static{}块、{}块和普通代码块的研究
2015-10-19 21:16
465 查看
1、普通代码块
普通代码块就是在方法或者是在语句中用{}定义的代码块普通代码块和方法中其它语句的执行顺序与其出现的顺序一致:即先出现先执行。
package com.wrh.codeblock; public class CommonCodeBlock { public static void main(String[] args) { //普通代码块的研究 { System.out.println("方法中的普通代码块1"); } System.out.println("主方法非代码块{}修饰的语句"); { System.out.println("方法中的普通代码块2"); } } } /* * 运行结果如下: 方法中的普通代码块1 主方法非代码块{}修饰的语句 方法中的普通代码块2 * */
2、自由代码块
package com.wrh.codeblock; //自由代码块的研究 //自由代码块就是在类中用{}定义的代码块 //执行顺序在new对象调用构造方法之前执行。但如果在一个类中有几个自由代码块,则其执行顺序与其出现的顺序一致:即先出现先执行。 //且每新建一个对象,都会执行一次。 public class freedomCodeBlock { { System.out.println("自由代码块2被运行");//故意将2写在前面 } public freedomCodeBlock(){ System.out.println("构造函数被执行"); } { System.out.println("自由代码块1被执行"); } public static void main(String[] args) { System.out.println("main 方法中在创建对象前的第一条语句被执行"); new freedomCodeBlock(); new freedomCodeBlock(); } } /* * 运行结果如下 main 方法中在创建对象前的第一条语句被执行 自由代码块2被运行 自由代码块1被执行 构造函数被执行 自由代码块2被运行 自由代码块1被执行 构造函数被执行 * */
3、static代码块
静态代码块是在类中这样定义的:static{},即是在自由代码块前面用static修饰的package com.wrh.codeblock; //静态代码块的研究 // //静态代码块的是在JVM进行类加载时被执行的,且只执行一次。即其执行时间是最早最早的。 //如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。 //注意:1 静态代码块不能存在于任何方法体内。 //2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。 public class StaticCodeBlock { static{ System.out.println("静态代码块--------1-------被执行"); } { System.out.println("自由代码块-----1-----被执行"); } static{ System.out.println("静态代码块--------2-------被执行"); } public StaticCodeBlock(){ System.out.println("构造函数被执行"); } { System.out.println("自由代码块-----2-----被执行"); } public static void main(String[] args) { System.out.println(" main 方法中在new对象之前的第一条语句被执行。"); new StaticCodeBlock(); new StaticCodeBlock(); } } /* *运行结果如下: 静态代码块--------1-------被执行 静态代码块--------2-------被执行 main 方法中在new对象之前的第一条语句被执行。 自由代码块-----1-----被执行 自由代码块-----2-----被执行 构造函数被执行 自由代码块-----1-----被执行 自由代码块-----2-----被执行 构造函数被执行 * */
相关文章推荐
- 面包屑之java并发
- eclipse安装android sdk后工具栏没有显示图标
- Java事务的相关概念
- java学习之浅谈多线程1
- Java知识点拾遗1
- [JavaWeb基础] 025.JAVA把word转换成html
- Stackoverflow上人气最旺的10个Java问题
- HDU1039 Easier Done Than Said?(java)
- HDU1038 Biker's Trip Odometer(java)
- java中post和get请求
- PO BO VO DTO POJO DAO概念及其作用
- 日常总结(四)eclipse或者myeclipse调试不显示变量值
- java的jdbc到底怎么学?(一)
- Java内存回收
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- struts2环境搭建和第一个程序
- 【Java基础】继承的一些总结
- java中的匿名内部类总结
- SpringMVC+uploadify文件上传
- Java集合---ConcurrentHashMap原理分析