千字掌握“代码块”概念 | 带你学《Java面向对象编程》之十二

简介: 本节通过多组案例深刻讲解了“{}”在Java世界中扮演的重要角色,简明扼要的介绍了普通代码块、构造块、静态块的异同点。

上一篇:了解超然物外的static-方法篇 | 带你学《Java面向对象编程》之十一
【本节目标】
通过学习本节,你将初步了解普通代码块、构造块、静态块的异同点以及它们在系统运行中的调用顺序,学会在不同的情况下灵活运用这几类代码块去解决实际的需求。
在程序之中使用“{}”定义的结构就称为代码块,而后根据代码块定义的位置以及定义的关键字的不同,代码块可以分为:普通代码块、构造块、静态块、同步代码块,其中对于同步代码块是在多线程的时候才会进行讲解。

普通代码块

普通代码块的主要特点是定义在一个方法之中的代码块。
范例:观察一个程序

public class JavaDemo {
   public static void main (String args[]) {
        if(true) {    //条件一定满足
          int x = 10 ;            //局部变量
          System.out.println (“x = ” + x) ;
   }
   int x = 100 ;               //全局变量
   System.out.println (“x =” + x) ;
  }
}

image.png
图一 执行结果一

按照Java程序的开发标准规定相同名称的变量是不能够在同一个方法之中存在的,但是由于此时有不同的分界描述。而如果说要定义普通代码块,那么只需要将当前的if语句取消即可。

public class JavaDemo {
   public static void main (String args[]) {
       {    //普通代码块
          int x = 10 ;            //局部变量
          System.out.println (“x = ” + x) ;
      }
   int x = 100 ;               //全局变量
   System.out.println (“x =” + x) ;
   }
}

image.png
图二 执行结果二

可以在一个方法之中进行一些结构的拆分,以防止相同变量名称所带来的互相影响。

构造代码块

构造块是定义在一个类之中的。
范例:观察构造块

class person {
   public person() {
     System.out.println(“【构造方法】Person类构造方法执行”) ;
   }
   {
      System.out.println(“【构造块】Person构造块执行”) ;
   }
}
public class JavaDemo {
   public static void main (String args[]) {
      new person() ;
      new person() ;
      new person() ;
   }
}

image.png
图三 执行结果三

构造块会优先于构造方法执行,并且每一次实例化新对象的时候都会调用构造块中的代码。

静态代码块

静态代码块主要指的是使用static关键字定义的代码块,静态块的定义需要考虑到两种情况:主类中定义静态块、非主类中定义静态块。
范例:在非主类中进行静态块的定义

class person {
   public person() {
      System.out.println(“【构造方法】Person类构造方法执行”) ;
  }
   static {
        System.out.println(“【静态块】静态块执行。”) ;
   }
   {
      System.out.println(“【构造块】Person构造块执行”) ;
   }
}
public class JavaDemo {
   public static void main (String args[]) {
      new person() ;
      new person() ;
      new person() ;
   }
}

image.png
图四 执行结果四

此时可以发现静态代码块会优先于构造块执行,并且不管有多少个实例化对象出现静态代码块只会执行一次,静态代码块的主要目的是为类中的静态属性初始化。
范例:观察静态属性初始化

class Message {
      public static String getCountry() {
           //该消息的内容可能来自于网络或其它服务器
          return “中华人民共和国”
      }
}
class person {
   private static String country ;
   static {
     //可能有很多语句要执行
      country = Message.getCountry() ;     //编写一部分的代码
      System.out.println(country) ;
   }
}
public class JavaDemo {
   public static void main (String args[]) {
      new person() ;
   }
}

image.png
图五 执行结果五

对于静态代码块我们还必须考虑另外一种情况,在主类中定义的形式。
范例:在主类中进行静态代码块的定义

public class JavaDemo {
   static {
      System.out.println(“********* 程序初始化 *********”) ;
}
   public static void main (String args[]) {
      System.out.println(“www.mldn.cn”) ;
   }
}

image.png
图六 执行结果六

静态代码块优先于主方法先执行。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:六组案例一举拿下Java实体类 | 带你学《Java面向对象编程》之十三
更多Java面向对象编程文章查看此处

相关文章
|
4月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
42 7
|
4月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
49 5
|
4月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
28天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
40 1
|
2月前
|
Java 编译器
【一步一步了解Java系列】:子类继承以及代码块的初始化
【一步一步了解Java系列】:子类继承以及代码块的初始化
28 3
|
3月前
|
监控 算法 Java
深入理解Java中的垃圾回收机制在Java编程中,垃圾回收(Garbage Collection, GC)是一个核心概念,它自动管理内存,帮助开发者避免内存泄漏和溢出问题。本文将探讨Java中的垃圾回收机制,包括其基本原理、不同类型的垃圾收集器以及如何调优垃圾回收性能。通过深入浅出的方式,让读者对Java的垃圾回收有一个全面的认识。
本文详细介绍了Java中的垃圾回收机制,从基本原理到不同类型垃圾收集器的工作原理,再到实际调优策略。通过通俗易懂的语言和条理清晰的解释,帮助读者更好地理解和应用Java的垃圾回收技术,从而编写出更高效、稳定的Java应用程序。
|
4月前
|
Java Docker 微服务
微服务架构的概念、特点以及如何在Java Web开发中实现微服务。
微服务架构的概念、特点以及如何在Java Web开发中实现微服务。
98 1
|
4月前
|
存储 安全 搜索推荐
深入探讨Session和Cookie的概念、用途以及如何在Java Web开发中有效地使用它们进行用户状态管理。
在Java Web开发中,Session和Cookie是管理用户状态的核心技术。Session存储于服务器端,通过唯一的Session ID识别用户,确保数据安全与隐私;Cookie则存储于客户端,用于记录用户偏好等信息。两者各有优势:Session适合存储敏感数据,但需合理管理避免资源浪费;Cookie便于持久化存储,但在安全性上需谨慎设置。开发者可通过Servlet API轻松操作二者,实现个性化用户体验与应用性能优化。
65 2
|
4月前
|
设计模式 Java
常用设计模式介绍~~~ Java实现 【概念+案例+代码】
文章提供了一份常用设计模式的全面介绍,包括创建型模式、结构型模式和行为型模式。每种设计模式都有详细的概念讲解、案例说明、代码实例以及运行截图。作者通过这些模式的介绍,旨在帮助读者更好地理解源码、编写更优雅的代码,并进行系统重构。同时,文章还提供了GitHub上的源码地址,方便读者直接访问和学习。
常用设计模式介绍~~~ Java实现 【概念+案例+代码】
|
4月前
|
Java 程序员 API
从代码中寻找平衡:’java代码块和具体的代码应用
Java 8 引入的 Lambda 表达式是一项革命性特性,使编写简洁、灵活且易维护的代码成为可能。Lambda 表达式作为一种匿名函数,支持任意数量参数和返回值,其基本语法为 `(parameters) -> expression` 或 `(parameters) -> { statements; }`。
38 0