3-6、final

语雀原文链接

1、final关键字

  • final是最终的意思,在java中,final是一个关键字,它可以被用来修饰局部变量、类、成员变量、成员方法。

2、final修饰局部变量

2-1、基本数据类型

  • 该变量必须在使用之前赋值,且只能被赋值一次
  • final修饰局部变量,在定义时该变量可以不被直接初始化,但是在使用该变量之前,该变量必须完成初始化,否则报错!
        final String a = "123";
        // 报错,无法为最终变量a分配值
        a = "abc";

        final int b;
        // 报错,可能尚未初始化变量b
        System.out.println(b);

        // final修饰局部变量,在定义时该变量可以不被直接初始化,但是在使用该变量之前,该变量必须完成初始化,否则报错!
        final boolean c;
        c = true;
        System.out.println(c);

2-2、引用数据类型

  • 当final修饰引用数据类型(类、接口、数组)的变量,则引用变量所指向的对象(即该变量所存放的地址值)不能更改,但是该对象的内容(即地址值上存储的内容)可以更改!!
        final int[] arr = new int[]{1,2,3};
        arr[0] = 1;
        // 报错 无法为最终变量arr分配值
        arr = null;

3、final修饰类

  • 修饰类:这个类没有子类(不能被继承,俗称“断子绝孙类”),但是该类可以有父类,可被实例化
public final class Animal {

}

// 报错,无法从最终Animal进行继承
public class Dog extends Animal{

}

4、final修饰方法

  • 修饰方法:这个方法不能被子类重写
public class Animal {

    public final void eat(){

    }
}

public class Dog extends Animal{

    // Dog中的eat()无法覆盖Animal中的eat()
    // 被覆盖的方法为final
    public void eat(){

    }
}

5、final修饰成员变量

  • final修饰成员变量:该成员变量必须在其所在类对象创建之前被初始化(且只能被初始化一次)
public class Dog{

    // 报错 ,变量 name 未在默认构造器中初始化
    public final String name;
}
  • 初始化有三种方式

方式1

  • 直接声明+赋值
public class Dog{

    public final String name = "jack";
}

方式2

  • 在构造方法中初始化
public class Dog{

    public final String name;

    public Dog() {
        name = "jack";
    }
}

方式3

  • 在构造代码块中将其初始化(赋值)
public class Dog{

    public final String name;

    {
        name = "jack";
        System.out.println("构造代码块");
    }

    public Dog() {
        System.out.println("Dog()");
    }
}
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

代码充电宝

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

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

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

打赏作者

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

抵扣说明:

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

余额充值