Java构造代码块,静态代码块原理与用法实例分析

作者:随风行云 时间:2023-11-03 09:03:45 

本文实例讲述了Java构造代码块,静态代码块原理与用法。分享给大家供大家参考,具体如下:

本文内容:

  • 局部代码块

  • 构造代码块

  • 静态代码块

  • 补充

 首发日期:2018-03-28


局部代码块:

局部代码块用于限制变量的生命周期,如果希望某些变量在某一过程之后直接失效而不希望被后面继续操作时,可以使用局部变量来限制变量的生命周期带局部代码块中


构造代码块:

  • 构造函数只对对应的对象进行初始化,构造代码块给类的所有对象进行初始化。

  • 由于构造代码块给类的所有对象进行初始化,所以对于每个对象都要初始化成一样值的变量,可以防止构造代码块中初始化。


class Person{
 String gender;
 int age;
 { //构造代码块
   System.out.println("构造代码块运行阶段");
   gender="男";
 }
 Person(){//构造函数
   System.out.println("构造函数Person()运行阶段");
 }
 Person(int age){//构造函数
   System.out.println("构造函数Person(int age)运行阶段");
   this.age=age;
 }

}

public class Demo {
 public static void main(String[] args) {
   Person p1=new Person();
   System.out.println(p1.gender);
   Person p2=new Person(18);
   System.out.println(p2.gender);
 }
}

上述代码结果:


构造代码块运行阶段
构造函数Person()运行阶段

构造代码块运行阶段
构造函数Person(int age)运行阶段

构造代码块的好处的例子:

构造函数版本:

Java构造代码块,静态代码块原理与用法实例分析

构造代码块版本:

Java构造代码块,静态代码块原理与用法实例分析


静态代码块:

  • 静态代码块与构造代码块不同的是,它只执行一次,用于对整个类进行初始化,通常是对类变量进行初始化处理。

  • 静态代码块中只能修改类变量。

  • 静态代码块的执行比主函数要早。

  • 有时候因为静态代码块只执行一次。所以有时候会用来“显示程序流程”。


class Person{
 static String gender;
 int age;
 static {
   System.out.println("静态代码块执行完成");
   gender="男";//更改的变量只能是类变量
 }
 Person(){//构造函数
   System.out.println("构造函数Person()运行阶段");
 }
 Person(int age){//构造函数
   System.out.println("构造函数Person(int age)运行阶段");
   this.age=age;
 }
}

public class Demo {

public static void main(String[] args) {
   Person p1=new Person();
   System.out.println(p1.gender);
   Person p2=new Person(18);
   System.out.println(p2.gender);

}

}

上述代码执行结果:


静态代码块执行完成
构造函数Person()运行阶段

构造函数Person(int age)运行阶段

补充:

  • 各个初始化块的运行顺序:静态代码块-》构造代码块-》构造方法

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

来源:https://www.cnblogs.com/progor/p/8665664.html

标签:Java,构造代码块,静态代码块
0
投稿

猜你喜欢

  • Android App实现监听软键盘按键的三种方式

    2021-09-14 10:39:27
  • Android自定义SeekBar实现滑动验证且不可点击

    2023-11-08 04:35:45
  • 微信跳一跳辅助Java代码实现

    2022-03-31 19:12:03
  • Android开发之获取短信验证码后按钮背景变化并且出现倒计时

    2022-12-21 10:09:40
  • 如何自动生成Mybatis的Mapper文件详解

    2023-07-28 08:20:54
  • win10和win7下java开发环境配置教程

    2022-05-01 05:34:22
  • 在C#的类或结构中重写ToString方法的用法简介

    2022-04-04 04:26:14
  • Java使用Preference类保存上一次记录的方法

    2023-05-08 01:49:14
  • Java中弱引用和软引用的区别以及虚引用和强引用介绍

    2023-01-23 18:55:33
  • 关于Java集合框架面试题(含答案)上

    2021-06-02 13:29:44
  • 使用RecyclerView实现水平列表

    2022-04-25 19:27:13
  • java递归算法实例分析

    2022-02-09 07:59:17
  • Java8如何从一个Stream中过滤null值

    2022-02-03 08:10:20
  • 关于jdk环境变量的配置方式解读

    2023-04-22 14:53:05
  • Java 中Comparable和Comparator区别比较

    2023-10-28 23:16:34
  • java ArrayList集合中的某个对象属性进行排序的实现代码

    2022-05-27 19:54:24
  • Spring Cloud Gateway网关XSS过滤方式

    2021-08-07 13:16:53
  • Sonar编译问题对应:File [...] can't be indexed twice.

    2023-11-25 11:07:28
  • Android SQLite数据库版本升级的管理实现

    2023-11-09 23:58:44
  • C++语言实现线性表之链表实例

    2023-06-20 22:21:20
  • asp之家 软件编程 m.aspxhome.com