实例详解局部代码块,构造代码块,静态代码块

简介: 实例详解局部代码块,构造代码块,静态代码块


可以分为局部代码块,构造代码块,静态代码块

局部代码块

====================================================================

局部代码块:

在方法中出现;

作用:限定变量的生命周期,及早释放,提高内存利用率

在同一个类出现的时候,多个局部代码块的执行顺序是自上而下的。

public class Demo1 {
public static void main(String[] args) {
//局部代码块
{
int x = 10;
System.out.println(x);
}
{
String y = “hello”;
System.out.println(y);
}
}
}

结果为

那么现在,如果在局部代码块的外面访问x和y变量会怎么样

public class Demo1 {
public static void main(String[] args) {
//局部代码块
{
int x = 10;
System.out.println(x);
}
System.out.println(x);
{
String y = “hello”;
System.out.println(y);
}
System.out.println(y);
}
}

结果为

局部代码块里面的变量无法在代码块的外面进行访问

构造代码块

====================================================================

构造代码块:

在类里面的方法外面出现的;

作用是将多个构造方法中相同的代码存放到一起,都放入构造代码块中

每次调用构造都执行,并且在构造方法前执行

执行顺序:
• 1
局部代码块 ——> 构造代码块 ——> 构造方法
• 1
class Test{
//Test类的无参构造器
Test(){
System.out.println(“Test类的无参构造方法”);
}
//构造代码块
{
System.out.println(“Test类的构造代码块”);
}
}
public class Demo1 {
public static void main(String[] args) {
Test c1 = new Test();
}
}

结果为

在创建Test类的对象时,调用了类面的无参构造器和构造代码块,而且先执行构造代码快,后执行无参构造器

再来看看多个构造器的情况

class Test{
public int t1;
//Test类的无参构造方法
Test(){
System.out.println(“Test类的无参构造方法”);
}
//Test类的带一个参数的构造方法
Test(int i){
this.t1 = i;
System.out.println(“Test类的带一个参数的构造方法”);
}
//构造代码块
{
System.out.println(“Test类的构造代码块”);
}
}
public class Demo1 {
public static void main(String[] args) {
Test c1 = new Test();
Test c2 = new Test(2);
}
}

结果为

可以看出来创建对象时,都需要执行一次构造代码块,然后是执行构造器。所以可以将不同构造器中相同的内容都放入构造代码块中。

最后再来看局部代码块,构造代码块,构造方法的执行顺序

class Test{
public int t1;
// static {
// System.out.println(“这是静态代码块1”);
// }
Test(){
System.out.println(“Test类的无参构造方法”);
}
Test(int i){
this.t1 = i;
System.out.println(“Test类的带一个参数的构造方法”);
}
{


相关文章
|
存储 Cloud Native Linux
C++ 继承下的构造函数和析构函数执行顺序
C++ 继承下的构造函数和析构函数执行顺序
|
6天前
|
JavaScript 前端开发
静态方法和类的实例方法的执行顺序是怎样的?
静态方法和实例方法的执行顺序取决于具体的调用逻辑和代码结构,理解它们之间的执行顺序有助于更好地组织和编写面向对象的 JavaScript 代码,确保程序的逻辑正确和清晰。
34 10
|
3月前
|
Java 编译器
不同变量的赋值时机 | 常见的面试题 | 静态代码块
这篇文章讨论了Java中不同变量的赋值时机,包括基本数据类型、引用数据类型、类变量、实例变量和局部变量,并解释了静态代码块、代码块和构造函数的执行顺序。
不同变量的赋值时机 | 常见的面试题 | 静态代码块
|
5月前
|
Java 编译器
Java中4种代码块:普通代码块,静态代码块,同步代码块,构造代码块
Java中4种代码块:普通代码块,静态代码块,同步代码块,构造代码块
233 0
|
Java
类成员(代码块)
类成员(代码块)
57 1
Java中类的初始化过程:(静态成员变量,静态代码块,普通成员变量,代码块初始化顺序)
Java中类的初始化过程:(静态成员变量,静态代码块,普通成员变量,代码块初始化顺序)
131 0
|
Java 编译器
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(上)
哈喽,大家好,我是指北君。 在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(上)
|
架构师 Java Spring
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(下)
哈喽,大家好,我是指北君。 在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(下)