java代码块在实际开发中的使用情景

为什么要用代码块

我们知道,java类中,不可以写操作语句,我们可以写:

public class demo{
    int i = 0;
}

或者

public class demo{
    int i;
}

但不可以写

public class demo{
    int i;
    i = 1
}

更不可以

public class demo{
    int i;
    i += 1;
}

(编译器会以为i是个类名

有时候,我们一开始不想给属性赋值,想在进行一些操作(可能是处理异常之类)之后,调用类的方法之前,对属性赋值。

这时候我们就要用到代码块。

代码块分类与特性

1、代码块分为静态代码块非静态代码块

静态代码块在类加载的时候,执行其中的语句。因为类加载只有一次,所以静态代码块只执行一次。

非静态代码块在new该类的一个对象时,执行其中的语句。每次new一个类,执行一次非静态代码块中的代码。

2、对应静态属性与非静态属性

对照静态属性与非静态属性的性质,很容易能想到,静态属性由静态代码块来负责赋值,非静态属性由非静态代码块来负责赋值。

3、拓展:什么时候加载类呢?

首先加载的是程序入口main()方法所在的类,

之后,在main()方法中首次提到某个类时,加载该类。

4、拓展:属性可以赋值的位置与赋值先后

赋值的位置:

①默认赋值

②显式赋值

③构造器中赋值

④new对象之后,通过 对象.属性 的方式赋值

⑤代码块中赋值

赋值先后:

① -> ②/⑤ -> ③ -> ④

没想到吧,代码块写在属性声明的前后时有区别的!

{
    id = 4
}
int id = 3
public static void main(){
    System.out.println(id);
}

int id = 3
{
    id = 4
}
public static void main(){
    System.out.println(id);
}

 结果不同!!!!!

具体实例

参考尚硅谷的一段获取数据库连接的代码:

 可以先不用关注细节,可以看到静态属性dataSourse先被设为了null,之后进行了一堆操作之后,才对它赋值。

注意静态属性用静态代码块来赋值,且其中只能调用静态方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值