更多内容请关注微信公众号【Java技术江湖】

这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!(关注公众号后回复”资料“即可领取 3T 免费技术学习资源以及我我原创的程序员校招指南、Java学习指南等资源)

**

本文主要介绍了三种代码块的特性和使用方法。

具体代码在我的GitHub中可以找到

github.com/h2pl/MyTech

文章首发于我的个人博客:

h2pl.github.io/2018/04/24/…

代码块:用{}包围的代码

java中的代码块按其位置划分为四种:

局部代码块

位置:局部位置(方法内部)

作用:限定变量的生命周期,尽早释放,节约内存

调用:调用其所在的方法时执行

 public class 局部代码块 {
@Test
public void test (){B b = new B();b.go();
}
}
class B {B(){}public void go() {//方法中的局部代码块,一般进行一次性地调用,调用完立刻释放空间,避免在接下来的调用过程中占用栈空间//因为栈空间内存是有限的,方法调用可能会会生成很多局部变量导致栈内存不足。//使用局部代码块可以避免这样的情况发生。{int i = 1;ArrayList<Integer> list = new ArrayList<>();while (i < 1000) {list.add(i ++);}for (Integer j : list) {System.out.println(j);}System.out.println("gogogo");}System.out.println("hello");}
}
复制代码

构造代码块

位置:类成员的位置,就是类中方法之外的位置

作用:把多个构造方法共同的部分提取出来,共用构造代码块

调用:每次调用构造方法时,都会优先于构造方法执行,也就是每次new一个对象时自动调用,对 对象的初始化

class A{int i = 1;int initValue;//成员变量的初始化交给代码块来完成{//代码块的作用体现于此:在调用构造方法之前,用某段代码对成员变量进行初始化。//而不是在构造方法调用时再进行。一般用于将构造方法的相同部分提取出来。//for (int i = 0;i < 100;i ++) {initValue += i;}}{System.out.println(initValue);System.out.println(i);//此时会打印1int i = 2;//代码块里的变量和成员变量不冲突,但会优先使用代码块的变量System.out.println(i);//此时打印2//System.out.println(j);//提示非法向后引用,因为此时j的的初始化还没开始。//}{System.out.println("代码块运行");}int j = 2;{System.out.println(j);System.out.println(i);//代码块中的变量运行后自动释放,不会影响代码块之外的代码}A(){System.out.println("构造方法运行");}
}
public class 构造代码块 {@Testpublic void test() {A a = new A();}
}
复制代码

静态代码块

 位置:类成员位置,用static修饰的代码块作用:对类进行一些初始化  只加载一次,当new多个对象时,只有第一次会调用静态代码块,因为,静态代码块                  是属于类的,所有对象共享一份调用: new 一个对象时自动调用public class 静态代码块 {@Test
public void test() {C c1 = new C();C c2 = new C();//结果,静态代码块只会调用一次,类的所有对象共享该代码块//一般用于类的全局信息初始化//静态代码块调用//代码块调用//构造方法调用//代码块调用//构造方法调用
}}
class C{C(){System.out.println("构造方法调用");}{System.out.println("代码块调用");}static {System.out.println("静态代码块调用");}
}
复制代码

执行顺序 静态代码块 -----> 构造代码块 -------> 构造方法

关于抽象类和接口的内容可以在上一节查看:

blog.csdn.net/a724888/art…

关于Java类和包的内容可以在下一节查看:

blog.csdn.net/a724888/art…

Java基础6:代码块与代码加载顺序相关推荐

  1. java静态变量,静态代码块,普通代码块,构造函数加载顺序

    https://blog.csdn.net/houkun_dobest/article/details/85227118

  2. Java基础篇:四种代码块详解

    所谓代码块,就是用大括号{}将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说,代码块是不能单独运行的,它必须有运行主体.在Java中代码块主要分为四种:普通代码块.静态代码块. ...

  3. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块的加载顺序

    1. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块 在Java中,使用{}括起来的代码称为代码块,代码块可以分为以下四种: (1)普通代码块:就是类中方法的方法体 public vo ...

  4. Java内部类以及类的加载顺序(一)

    java内部类以及类的加载顺序(一) Java 类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类就被称为内部类.根据定义的方式不同,内部类分为四大类静态内部类,成员内部类,局部内部类,匿 ...

  5. Java-Day11 面向对象遍程的入门 (类属性的默认值、构造方法、类的成员、static关键字、类的成员加载顺序、Java(权限)访问修饰符)

    目录 1. 类的属性的默认值问题 2. 构造方法(Constructor) 3. 类的成员 3.1 类的成员之一:属性 3.2 UML类图 4. static关键字 5. 类的成员加载(运行)顺序 6 ...

  6. 类的加载顺序(例题)

    1.很重要!!! 例子: package Servlet.day0811.am; public class StaticTest {static StaticTest st=new StaticTes ...

  7. Java--类的加载顺序

    来源:https://www.cnblogs.com/sxkgeek/p/9647992.html 1.有继承关系的加载顺序 关于关键字static,大家 都知道它是静态的,相当于一个全局变量,也就是 ...

  8. Java基础:Java代码加载顺序

    Java代码加载顺序 代码块 类加载和初始化相关案例一 案例二 深度加载知识 静态变量 内部类中不能定义静态变量 代码块 项目 Value 作用 局部代码块 在main方法里面 给变量限定声明周期,局 ...

  9. Java面试题之类的静态代码块和静态属性等的加载顺序

    如以下面试题: /** * @author hjs * @date 2019/3/62:41 * @Dec */public class B { public static B t1 = new B( ...

  10. java代码从编译到加载执行的过程

    代码编译 在刚接触java时,我们都知道通过javac命令将java源码文件编译成.class字节码文件,这是由编译器来完成的. 包括泛型擦除属于编译时期的语法糖. .class字节码文件是跨平台的, ...

最新文章

  1. NET问答: 如何按属性进行 Distinct() ?
  2. 深度区分LoRa和LoRaWAN的区别
  3. bs cs架构区别_软件架构设计分层模型和构图思考
  4. JSONObject与JSONArray的使用
  5. jsp学习之路之Myeclipse部署tomcat服务器并实现Hello World一个小网页
  6. 【洛谷】普及练习场 深度优先搜索【易】
  7. Java int基本类型和Integer之间引发的问题思考
  8. openSUSE12.1安装及基本设置
  9. 【信息系统项目管理师】第7章-项目成本管理 知识点详细整理
  10. redis数据类型之sorted set
  11. spinlock变量没有初始化
  12. python3-pwntools教程_CTF PWN工具篇1
  13. pcap文件linux怎么打开,pcap文件用什么打开
  14. 软件项目管理流程总结
  15. 【问题记录】pip 安装报错 Failed to establish a new connection
  16. 远程访问openwrt路由器+配置动态DNS
  17. Gocv图片合成视频(无音频)
  18. mysql中dist_在SQL语句中dist是什么意思
  19. 【软件测试】盘一盘工作中遇到的 MQ 异常测试
  20. 继承(下)----虚继承

热门文章

  1. FFA 2021 专场解读 - 实时数据湖
  2. 鱼哥,我怕蛇,可以搞Python么?
  3. 电脑怎么找到tomcat端口_更换内存条的时候我怎么找到自己电脑配置的详细信息...
  4. buck变换器设计matlab_电力电子变换器控制设计(1)
  5. python用三种方式定义字符串、并依次输出_Python中字符串拼接的三种方式
  6. switch里面变量吗c语言,讨教一下关于switch语句中变量定义的相关问题
  7. 帧同步分离逻辑层和渲染层_帧同步如何分离逻辑和渲染?
  8. linux lsiutil raid创建,使用MegaCli工具查看状态
  9. 连接linux常用的工具
  10. linux系统常用命令-1--lsblk