【基础问题】String 类型为什么是final类型
2024-10-08 09:38:52
关于为什么此类问题,都能列出12345...种种原因
已创建具体的值不可修改,故本身就是线程安全的,放到多线程中也不会担心被修改,支持在多线程中共享自身 。
因为字符串是不可变的,所以在它创建的时候HashCode就被缓存了,不需要重新计算。这就使得字符串很适合作为Map中的键,字符串的处理速度要快过其它的键对象。这就是HashMap中的键往往都使用字符串。
如果字符串是可变的,那么会引起很严重的安全问题。譬如,数据库的用户名、密码都是以字符串的形式传入来获得数据库的连接,或者在socket编程中,主机名和端口都是以字符串的形式传入。因为字符串是不可变的,所以它的值是不可改变的,否则黑客们可以钻到空子,改变字符串指向的对象的值,造成安全漏洞。
最新文章
- 关于最少VC号数目的猜想
- Go加密解密之DES
- ClipDrawable 实现图片渐变现实
- 引擎崩溃、异常、警告、BUG与提示总结及解决方法
- loj 1036(dp)
- Web 开发常见安全问题
- [转]SharePoint开发中可能用到的各种Context(上下文)
- linux修改open files数
- Android OkHttp详解
- Comet、SSE、Web Socket
- 【noip2012】疫情控制
- 问题-[delphi2007、2010]无法二次启动,报EditorLineEnds.ttr被占用,进程一直有bds.exe?
- js 字符及字符串
- maven install 跳过 测试 test
- 计算机网络相关:应用层协议(二):HTTP
- 小问题填坑,关于obj.x和obj[";x";]
- 将 C# 枚举序列化为 JSON 字符串 实践
- Spring bean默认为单例模式会引发并发问题吗
- centos6安装python3.6.4
- Angular 个人深究(五)【外部包引用 Leaflet 简单实用】