首页 > 编程语言 >Java String为什么不可变?

Java String为什么不可变?

时间:2023-02-19 23:34:27浏览次数:39  
标签:Java String 不可 字符串 数组 修饰 final

public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
    private final char value[];
	//...
}

String 类中使用 final 关键字修饰字符数组来保存字符串,所以String 对象是不可变的。

final 关键字修饰的类不能被继承,修饰的方法不能被重写,修饰的变量是基本数据类型则值不能改变,修饰的变量是引用类型则不能再指向其他对象。因此,final 关键字修饰的数组保存字符串并不是 String 不可变的根本原因,因为这个数组保存的字符串是可变的(final 修饰引用类型变量的情况)。

String不可变的真正原因:

  1. 保存字符串的数组被 final 修饰且为私有的,并且String 类没有提供/暴露修改这个字符串的方法。
  2. String 类被 final 修饰导致其不能被继承,进而避免了子类破坏 String 不可变。

标签:Java,String,不可,字符串,数组,修饰,final
From: https://www.cnblogs.com/myquark/p/17135942.html

相关文章

  • Java 如何通过JDBC 操作数据库
    JDBC是Java数据库连接,即JavaDataBaseConnectivity。JDBC可让Java通过程序操作关系型数据库,可基于驱动程序实现与数据库的连接与操作。JDBC有统一的API,提供一致的......
  • Java实现对MongoDB的AND、OR和IN操作
    很全的JAVA操作mongodb:​​http://www.blogjava.net/xiaomage234/archive/2012/08/06/384904.html​​ 转的: AND:publicvoidtestAnd(){//agender='female'ANDag......
  • 常用java路径
    System.out.println(LmsFEMain.class.getClassLoader().getResource(""));//file:/E:/workspace/FEServer/bin/System.out.println(ClassLoader.getSystemResource("")......
  • JS取queryString
    String.prototype.GetValue=function(para){varreg=newRegExp("(^|&)"+para+"=([^&]*)(&|$)");varr=this.substr(this.indexOf("\?")+1).match(re......
  • java 解析 文本
     /***读取文本文件*@paramfilepath*@return*/publicstaticStringBuilderparser(Stringfilepath){InputStreaminStream=StrUtils.class.getR......
  • java 导出 excel
    转的: 鉴于windows操作系统及office办公平台,在个人桌面上的垄断地位,使得excel/word/ppt等文件被广泛应用。通过java读写excel文档是编程开发中常见问题,比如在swing和web应......
  • Java: File
    importjavafx.application.Application;//https://gluonhq.com/products/javafx/https://github.com/openjdk/jfximportjavafx.fxml.FXMLLoader;//https://gluo......
  • DVWA靶场实战(十四)——JavaScript
    DVWA靶场实战(十四)五、JavaScript:1.漏洞原理:这里的JavaScript其实是JavaScriptAttack也就是JS攻击。JavaScript是一种基于对象和事件驱动的、并具有安全性能的脚本......
  • JavaScript知识汇总
    1JavaScript功能直接写入HTML输出流(在HTML输出中使用document.write,如在文档加载后使用该方法会覆盖整个文档)对事件进行响应(如鼠标事件、键盘事件等)改变HTML内......
  • 算法刷题-放苹果-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......