摘要:代码块我们主要观察普通代码块构造块静态块的主要作用。代码实例构造方法类的构造方法将代码块写在了类里面类的构造块控制台输出类的构造块类的构造方法此时实例化类对象时,虽然执行的是类的构造方法,但是构造块里面的代码也执行了。
代码块
我们主要观察普通代码块、构造块、静态块的主要作用。
在程序编写之中可以直接使用"{}" 定义一段语句,那么根据此部分定义的位置以及关键字的不同可以分为以下几种:
普通代码块
构造块
静态块
不过,我们在写程序的时候,尽量不去使用代码块。
普通代码块如果说一个代码块写在了方法里,那么就称它了普通代码块。
代码实例
下面说的变量,只是相对关系。
public class TestDemo { public static void main(String[] args) { {// 普通代码块 int num = 10; //局部变量 System.out.println(num); } int num = 100; // 相对的上面的局部变量,为全局变量 System.out.println(num); } }
实际上普通代码块就是为了防止在方法里面编写的代码过多时,有可能产生的变量重名。对一个方法的代码进行局部分割。
构造块如果说现在将一个代码块写在了一个类里面,那么我们就称为构造块。
代码实例
class Book{ public Book() { // 构造方法 System.out.println("【A】 Book 类的构造方法"); } {// 将代码块写在了类里面 System.out.println("【B】 Book 类的构造块"); } } public class TestDemo { public static void main(String[] args) { new Book(); } }
控制台输出
【B】 Book 类的构造块 【A】 Book 类的构造方法
此时实例化 Book 类对象时,虽然执行的是 Book 类的构造方法,但是构造块里面的代码也执行了。并且会发现构造块的代码是优先于 构造方法执行。
代码实例
class Book{ public Book() { // 构造方法 System.out.println("【A】 Book 类的构造方法"); } {// 将代码块写在了类里面 System.out.println("【B】 Book 类的构造块"); } } public class TestDemo { public static void main(String[] args) { new Book(); new Book(); new Book(); } }
控制台输出
【B】 Book 类的构造块 【A】 Book 类的构造方法 【B】 Book 类的构造块 【A】 Book 类的构造方法 【B】 Book 类的构造块 【A】 Book 类的构造方法
从控制台的输出可以看到,每当我们实例化一个 Book 类时,我们的构造块都会被执行一次。
静态块如果我们的代码块使用了 static 进行定义的话,那么就被称为静态块。我们分为两种情况来看。
在非主类中使用代码实例
class Book{ public Book() { // 构造方法 System.out.println("【A】 Book 类的构造方法"); } {// 将代码块写在了类里面 System.out.println("【B】 Book 类的构造块"); } static {// 将代码块写在了类里面 System.out.println("【C】 Book 类的构造块"); } } public class TestDemo { public static void main(String[] args) { new Book(); new Book(); new Book(); } }
控制台输出
【C】 Book 类的构造块 【B】 Book 类的构造块 【A】 Book 类的构造方法 【B】 Book 类的构造块 【A】 Book 类的构造方法 【B】 Book 类的构造块 【A】 Book 类的构造方法
从上面我们可以看到,静态块只是执行了一次,并且是优先于构造方法和构造块。也就是说,不管实例化多少个对象,静态块只执行一次。
在主类中使用代码实例
public class TestDemo { static { System.out.println("**********"); } public static void main(String[] args) { System.out.println("main()"); } }
控制台输出
********** main()
从控制台的输出,我们就可以知道,static 静态块 是优先于 main 方法执行的
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/76746.html
以下是Java技术栈微信公众号发布的关于 Java 的技术干货,从以下几个方面汇总。 Java 基础篇 Java 集合篇 Java 多线程篇 Java JVM篇 Java 进阶篇 Java 新特性篇 Java 工具篇 Java 书籍篇 Java基础篇 8张图带你轻松温习 Java 知识 Java父类强制转换子类原则 一张图搞清楚 Java 异常机制 通用唯一标识码UUID的介绍及使用 字符串...
摘要:方法区存储不变的东西类加载信息,静态变量,字符串常量。通用分代垃圾回收基础时只需要知道有这几种方法即可四内存分析静态变量,静态方法,静态初始化块静态变量与方法不需要具体的对象就可以调用用类名调用,静态初始化块后就会调用了。 一:面向对象与面向过程 笼统说,一个流程简单一个复杂,面向过程好比开车上路,可以简单罗列出几个动作:上车,系安全带,点火,出发;向过程好比造出一辆汽车,肯定不能...
阅读 2641·2023-04-25 18:10
阅读 1552·2019-08-30 15:53
阅读 2713·2019-08-30 13:10
阅读 3178·2019-08-29 18:40
阅读 1093·2019-08-23 18:31
阅读 1175·2019-08-23 16:49
阅读 3373·2019-08-23 16:07
阅读 853·2019-08-23 15:27