JavaSE笔记

final关键字

final代表最终的、不可改变的。
它可以修饰类、方法、变量。

1. final修饰一个变量

修饰两种不同数据类型变量的区别:

  • 当final修饰基本数据类型的变量时,必须赋予初始值且赋值之后不可以在改变;
  • 当final修饰引用数据类型的变量时,该引用变量不可以指向其他的对象地址。
    基本数据类型便是我们常用的8种:int、short、long、float、double、byte、char、boolea
    引用数据类型:类、数组、接口
    通过实例先来看final修饰基本数据类型:
        final int MAX_NUMBER = 1000;
        MAX_NUMBER = 10;      //java: 无法为最终变量MAX_NUMBER分配值
        /*
        运行发现回有一个无法为最终变量分配值的异常,也就说明我们无法去改变此变量的值
        */

所以在通常情况下将final修饰的变量命名为常量;
在java中我们的常量一般遵守如下的命名规范:

		 -所有字母全部大写,当有多个字母时,字母之间用“_”连接。

再来看以数组为例的引用数据类型被final修饰时的情况:

 		final int[] arr = {1,2,3};
        arr = new int[]{4,5,6}; 
        //java: 无法为最终变量arr分配值

		//我们来改变数组中的第一个元素
		final int[] arr = {1,2,3};
        arr[0] = 4;
        for (int a:arr) {
            System.out.print(a + " ");
        }
        //4 2 3 
         **输出结果4 2 3发现修改成功了所以说被final修饰的引用数据变量是无法去改变该引用变量指向其他的对象地址**

2. final修饰方法
根据上面的变量的形式可以推出,final修饰的方法为最终方法,不可以被子类重写。
如果在实际中认为此方法最够完美,后续中不需要在被重写那么便可以使用final。因为final方法比非final方法快,编译的时候会有一个静态绑定的操作,不需要运行时再动态绑定。在这里插入图片描述

会提示一个“ eat() cannot override ‘eat()’ in ‘exerpise.Animal’; overridden method is final”
翻译过来便是:“eat()”不能覆盖“exerpise.Animal”中的“eat()”;重写的方法是最终的。
由此final修饰的方法不可以 在被重写。
3.final修饰类
表示最终类,该类不可以被继承。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小张不会打篮球

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

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

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

打赏作者

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

抵扣说明:

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

余额充值