当前位置:网站首页>为什么字符串使用final关键字
为什么字符串使用final关键字
2022-07-29 13:41:00 【xiaokaikaa】
final 的定义
1.final关键字可以用来修饰类,方法,变量。
2.修饰类时,该类不可以被继承;
3.修饰方法时,该方法不可以被子类重写;
4.修饰变量时,该变量为常量,需要进行初始化赋值操作,且只能被赋值一次,赋值后不可再改变。
虽然引用变量被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的。stack栈里的引用地址不可变,但heap堆里的数据却是可以改变的。
String为什么不可变
在String源码里,除了String类被final修饰外,value数组也被final修饰,String类本质上就是一个不可变的char数组。
因为被final修饰后,引用地址虽然不可变,但数据本身却是可变的,同理,value数组里的数据也可能会被修改。但由于value数组本身是private私有访问,且String类本身也被final修饰,不能被继承,从而使String不能被改变。
String类被设计成final后,因为不可变,在多线程环境下,线程安全。
安全性高,比如,数据库的用户名、密码都是以字符串的形式传入来获得数据库的连接,或者在socket编程中,主机名和端口都是以字符串的形式传入。因为String对象是不可变的,所以它的值是不可改变的,保证了安全性。
总结:
1支持字符串常量池
2线程安全
3保证hash code的唯一性
4安全性
边栏推荐
猜你喜欢
随机推荐
Sqoop导入导出时数据内存溢出
3555. 二叉树
大一(下)暑假作业
Network connection optimization for instant messaging mobile terminal development
期货合约知多少
BGP联邦综合实验
How to Improve Embedded Programming with MISRA
The new technical director, who is in the form of a isXxx Boolean type definition, tomorrow need not come!
还在开发短信验证码登录?试试(本机号码一键登录)
PytestFixture实战应用+Pytest.ini与conftest.py应用详解+Fixture及yield实现用例前置后置
【MySQL】ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
即时通讯场景下安全合规的实践和经验
浅谈MES系统质量管理的方案
基于降噪自编码器与改进卷积神经网络的采煤机健康状态识别
Leetcode67. 二进制求和
多人协作开发出现代码冲突,如何合并代码?
线程池拒绝策略详解
开关电源-PWM外设简介及MCC配置
关于知识付费的一些思考
How to merge the code when there is a code conflict in the collaborative development of multiple people?









