深入理解final关键字

1.final的含义:
代表最后的、最终的,用final表示的变量我们称之为常量

2.final的应用情况:
(1)对于final修饰的类不能被继承

(2)对于final修饰的方法不能被覆盖、重写

(3)final修饰的变量在初始化之后就不能再修改【Java中的常量一般用大写字母表示,多个单词之间用下换线隔开】

3.final的使用规范:
(1)final 不能用来修饰构造器

(2)对于非静态的常量初始化有三种方法:

在定义的时候直接初始化
利用普通代码块来初始化
利用构造方法来完成初始化

☀️ 利用代码来说明:

public class Final_ {
    public static void main(String[] args) {
        Circle1 c1 = new Circle1();
        System.out.println(c1.calculate(2));

        Circle2 c2 = new Circle2();
        System.out.println(c2.calculate(2));

        Circle3 c3 = new Circle3();
        System.out.println(c3.calculate(2));
    }
}

class Circle1{
    private  final double PI = 3.14;

    public double calculate(int r){
        return PI * r * r;
    }
}

class Circle2{
    private  final double PI;
    {
        PI = 3.14;
    }
    public double calculate(int r){
        return PI * r * r;
    }
}

class Circle3{
    private final double PI;

    public Circle3(){
        PI = 3.14;
    }
    public double calculate(int r){
        return PI * r * r;
    }
}

(3)对于静态常量初始化有两种方法:

可以在定义静态常量的时候直接赋值
也可以通过静态代码块来对静态常量初始化

⭐️ 利用代码来说明:

class Circle4(){
    private static final double PI = 3.14;
    
    public static double calculate(int r){
        return PI * r * r;
    }
}

class Circle5{
    private static final double PI;
    static{
        PI = 3.14;
    }
    public static double calculate(int r){
        return PI * r * r;
    }   
}

因为是静态的方法,所以不需要创建对象,可以直接通过类名来调用

//在主方法中使用下列语句就可以完成圆面积的计算
System.out.println(Circle4.calculate(2));
System.out.println(Circle5.calculate(2));

4.将static与final配合使用有时候可以提高效率

private static int num = 100;
static {
	System.out.println("静态代码块被调用!");
}

如果通过类名调用该静态变量时,会加载类信息,进而就导致静态代码块自动执行,那么有什么优化这种情况的办法呢?

private static final int num = 100;
static {
	System.out.println("静态代码块被调用!");
}

添加上final之后就变为了常量,此时通过类名调用该常量就不会导致类信息被加载了。

5.对于所有的包装类(Integer、Double、Float、Boolean等)和 String类都是由final修饰的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bow.贾斯汀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值