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

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


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

局部代码块

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

局部代码块:

在方法中出现;

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

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

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类的带一个参数的构造方法”);
}
{


相关文章
|
8月前
|
存储 Cloud Native Linux
C++ 继承下的构造函数和析构函数执行顺序
C++ 继承下的构造函数和析构函数执行顺序
|
11天前
|
Java 编译器
Java中4种代码块:普通代码块,静态代码块,同步代码块,构造代码块
Java中4种代码块:普通代码块,静态代码块,同步代码块,构造代码块
10 0
|
10月前
|
Java
类成员(代码块)
类成员(代码块)
44 1
Java中类的初始化过程:(静态成员变量,静态代码块,普通成员变量,代码块初始化顺序)
Java中类的初始化过程:(静态成员变量,静态代码块,普通成员变量,代码块初始化顺序)
112 0
|
存储
循环内不要不断创建对象引用
循环内不要不断创建对象引用
173 0
|
Java 编译器
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(上)
哈喽,大家好,我是指北君。 在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(上)
|
架构师 Java Spring
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(下)
哈喽,大家好,我是指北君。 在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(下)
|
Java 编译器 Spring
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(上)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(上)

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    27
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    27
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    27
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    28
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    25
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    31
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    22
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    20
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    21
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    20