Java构造代码块,静态代码块原理与用法实例分析
作者:随风行云 发布时间:2023-11-03 09:03:45
标签:Java,构造代码块,静态代码块
本文实例讲述了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)运行阶段
男
构造代码块的好处的例子:
构造函数版本:
构造代码块版本:
静态代码块:
静态代码块与构造代码块不同的是,它只执行一次,用于对整个类进行初始化,通常是对类变量进行初始化处理。
静态代码块中只能修改类变量。
静态代码块的执行比主函数要早。
有时候因为静态代码块只执行一次。所以有时候会用来“显示程序流程”。
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
0
投稿
猜你喜欢
- 1、volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)&nb
- 在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件。分别存储位置: &n
- 1、什么是servlet异步请求Servlet 3.0 之前,一个普通 Servlet 的主要工作流程大致如下:(1)、Servlet 接收
- 简介我们在使用flutter的过程中,有时候需要控制某些组件是否展示,一种方法是将这个组件从render tree中删除,这样这个组件就相当
- 详解java.lang.reflect.Modifier.isInterface()方法java.lang.reflect.Modifier
- 前言近期有个业务需求,涉及用户付费相关的计算,需要一个日历组件,组件功能如下:仅支持从明天开始选择预定日期仅支持可选范围内的日期日期的选择是
- 本文实例为大家分享了OpenCV实现直线检测并消除的具体代码,供大家参考,具体内容如下很简单,代码如下#include<iostrea
- 前言如今多线程编程已成为了现代软件开发中的重要部分,而并发编程中的线程同步问题更是一道难以逾越的坎。在Java语言中,synchronize
- Spring 配置文件报错:元素 "context:component-scan" 的前缀 "context&
- 一,FileWritter写入文件FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指
- 整理文档,java 动态增加定时任务示例,直接上代码。import org.apache.tools.ant.util.DateUtils;
- 简介AccessibilityService的设计初衷是为了辅助有身体缺陷的群体使用Android应用,它的设计贯穿着Android的控件树
- 这篇文章主要介绍了java加载property文件配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- Android的应用被限制为最多占用16m的内存,至少在T-Mobile G1上是这样的(当然现在已经有几百兆的内存可以用了——译者注)。它
- 一、SpringCache介绍Spring Cache 是一个优秀的缓存组件。自Spring 3.1起,提供了类似于@Transaction
- springboot项目启动慢的问题排查springboot项目,随着时间的推移,启动耗时逐步增加,从几分钟慢慢的达到30多分钟,有点恐怖!
- 合并有序数组的实现java版本:实例代码public class Merge {//合并有序数组 public static v
- 本文实例为大家分享了PropertyDescriptor反射调用set和get方法,供大家参考,具体内容如下第一段:package com.
- 最近项目中要做一个带进度条的上传文件的功能,学习了AsyncTask,使用起来比较方便,将几个方法实现就行,另外做了一个很简单的demo,希
- 创建类第一步新建一个java类QSV,构造函数传入需要解析的文件名称。public class QSV {private RandomAcc