当前位置: 首页 > news >正文

Java_final关键字

目录

1、final关键字

1.1 认识final关键字

修饰类

修饰方法

修饰变量

2、final修饰变量的注意

final修饰引用型变量

3、常量


1、final关键字

1.1 认识final关键字

final关键字是最终的意思,可以修饰:类、方法、变量。

  • 修饰类:该类被称为最终类,特点是不能被继承了。
  • 修饰方法:该方法被称为最终方法,特点是不能被重写了。
  • 修饰变量:该变量有且仅能被赋值一次
修饰类
//1、final修饰类,类不能被继承final class A{}
// class B extends A{}  //报错:类B不能继承final类A

那么问题来了,final修饰类用在哪里呢?一般工具类都会用final修饰。

修饰方法
//2、final修饰方法,方法不能被重写
class A{public final void show(){System.out.println("show()");}
}
class B extends A{// 报错:方法不能被重写
//    @Override
//    public  void show(){
//        System.out.println("show()");
//    }
}

修饰变量

变量有那些呢?

a、成员变量

        静态成员变量

        静态成员变量

b、局部变量:在方法内的变量

final修饰局部变量

        //1、先看局部变量用fianl修饰final int a = 10;
//        a = 101 ;   //用final修饰的局部变量不能被修改,这里报错

final修饰成员变量.

class Student {//2、定义成员变量//2.1、成员变量用final修饰,定义静态成员变量//在定义静态成员变量的时候一般会把final方法static后面//final修饰静态成员变量,这个变量今后会被称为常量,可以记住一个固定值,并且在程序中不能被修改了,通常这个值作为系统配置信息。//常量的名称建议大写,多个单词用下划线隔开public static final String SCHOOL_NAME = "上海大学";//2.2、成员变量用final修饰,定义实例成员变量(通常没有意义)//实例变量是属于对象的。例如下面的NAME使用final修饰之后,所有人的姓名都是张三,并且不能够修改。和现实不符 。所以说实例变量用final修饰,通常没有意义。public final String name = "张三";
}

2、final修饰变量的注意

final修饰基本类型的变量,变量存储的数据不能被改变。

final修饰引用类型的变量,变量存储的地址不能被改变,但地址所指向对象的内容是可以被改变的

final修饰引用型变量
        /*第一行代码 int []arr = new int[]{1,2,3,4}; 创建了一个新的数组对象,并将该数组对象的引用赋值给 arr 变量第二行代码 arr = new int[]{1,2,3,4,5}; 创建了另一个新的数组对象,并将这个新数组对象的引用重新赋值给 arr 变量*///代码1:int []arr = new int[]{1,2,3,4};arr = new int[]{1,2,3,4,5};final int []arr1 = new int[]{1,2,3,4};//arr1 = new int[]{1,2,3,4,5}; //报错 原因是final修饰引用类型的变量变量的地址不能被改变,但是这里new 创建的数组对象,地址发生了改变,所以报错arr1[0] = 5;  //final修饰的变量地址不可以被修改,地址所指向的内容可以被改变

3、常量

  • 使用了 static final修饰的成员变量就被称为常量。
  • 作用:常用于记录系统的配置信息。
  • 注意:常量名的命名规范:建议使用大写英文单词,多个单词使用下划线连接起来
class Student1{public static final String SCHOOL_NAME  = "上海大学";}

        常量的使用:比喻在项目中有一个最大组长度,所以的数组长度全部定义成MAX_LANGTH。这里我们就可以使用 static final修饰的成员变量。好处:如果后期发现定义的数组长度不够用就可以直接修改MAX_LENGTH的值,后面使用的所有MAX_LANGTH全都会被修改。如果不适用常量就需要一个一个进行修改。

        在开发中会写一个常量包(Constant)里面有成百上千个常量。

Constant类

public class Constant {public static final int MAX_LANGTH = 10;
}

Test类

public class Test2 {public static void main(String[] args) {int []arr1 = new int[Constant.MAX_LANGTH];int []arr2 = new int[Constant.MAX_LANGTH];int []arr3 = new int[Constant.MAX_LANGTH];}
}

使用常量记录系统配置信息的优势、执行原理

  • 代码可读性更好、可维护性更好。
  • 程序编译后,常量会被“宏替代”:出现常量的地方全部会被替换成其记住的字面量,这样可以保存使用常量和直接用字面量的性能是一样的。

我们看一下反编译文件:看MAX_LANGTH是否被替换为10。

http://www.dtcms.com/a/529001.html

相关文章:

  • 2025年9月电子学会全国青少年软件编程等级考试(scratch图形化一级)真题及答案
  • 信息化推进与网站建设网站seo分析报告案例
  • 网站域名 空间 是每年都要缴费吗查营业执照怎么查询
  • 网络嗅探抓包工具 Wireshark v4.6.0
  • spin_lock 能否 sleep ? 虚拟化场景
  • Qt布局管理停靠窗口QDockWidget类
  • STM32定时器输出PWM波
  • 重庆做网站开发的公司天津市建设工程交易管理网站
  • 网站源码是用什么做的爱链接购买链接
  • 数学 - 基础线性代数
  • 蓝牙网关是什么?能做什么?
  • Python入门与MySQL数据库操作实践指南
  • 广东网站设计服务商服装在线设计平台
  • 网站 刷流量 SEO中山建网站多少钱
  • 启动中国蚁剑antsword
  • 建行移动门户网站首页齐齐哈尔电话黄页
  • FreeRTOS - 基于ESP32 串口数据收发
  • 【释义】摩尔定律性能收益在减弱
  • REFLECTOOL: Towards Reflection-Aware Tool-Augmented Clinical Agents
  • 基于android的体育馆预约使用系统
  • 免费psd模板网站商标注册申请需要什么材料
  • 【开题答辩全过程】以 查寝打卡系统为例,包含答辩的问题和答案
  • mvc 网站开发平度市城市建设局网站
  • 旅行社网站建设规划的内容wordpress 评论模板
  • EtherCAT转EtherNet/IP工业数据采集网关:保障编码器与工控机稳定交互的整合案例
  • 网络层网际协议IP
  • 凡科免费建站平台渭南定制网站建设公司
  • 哪款纳米研磨机能将药物颗粒做到≤100nm?需要多少小时?
  • 《C语言疑难点 --- 字符函数和字符串函数专题(上)》
  • 株洲网站建设联系方式知名的家居行业网站开发