Java中String类 用final修饰的原因

一杯就醉1929 2016-04-05 10:06:03
Java中String类 用final修饰的原因?
...全文
479 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
堆空间里面有个字符串池,里面都是字符串常量,也就是说字符串的+ , 其实是两个引用的+ ,与字符串池本身常量无关
howsun_zh 2016-04-06
  • 打赏
  • 举报
回复
Java没有字符串这种基本类型,它是使用char[]数组包装而成,对象生成那一刻,内部数据就确定了;另外,它利用编译器重载了“+”、“==”操作符,在虚拟机里与内部常量池做了映射,可见内部非常复杂。因此,为了保证这种数据结构完整性,不被修改和其它操作(例如子类、反射),因此使用final关键字加于限制。
飏飏一蝶 2016-04-06
  • 打赏
  • 举报
回复
如何创建一个不可变类: 1、.所有成员都是private .2、不提供对成员的改变方法,例如:setXXXX 3、确保所有的方法不会被重载。手段有两种:使用final Class(强不可变类),或者将所有类方法加上final(弱不可变类)。 4、如果某一个类成员不是原始变量(primitive)或者不可变类,必须通过在成员初始化(in)或者get方法(out)时通过深度clone方法,来确保类的不可变。 这就是String需要final修饰的原因。
sun295508987 2016-04-06
  • 打赏
  • 举报
回复
不希望被修改呗

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧