这里有一堆例子来说明Java的String的不可变性。

1、声明一个String

String s = "abcd";


s 变量保存string对象的引用,下面的箭头解释成保存了哪个对象的引用。

2、 给一个String 变量赋值为另外一个String 变量。

String s2 = s;

String对象不可变展示2变量s2 保存这相同引用的值,它们都指向了同一对象的值。

3、连接String

s = s.concat("ef");

变量s 现在保存的是新创建的sting对象的引用。

总结:
一旦一个string 被在内存(堆)中创建,它就是不可以被改变的。我们应该注意的是所有的String方法都不会改变一个string的本身,而是返回一个新的string。

如果我们需要一个可以被改变的string,那么我们可以使用StringBuffer(译者注:线程安全)或StringBuilder。否则每创建一个新的string的时候,会浪费大量的时间在垃圾收集上。

这里有个StringBuilder的应用例子。

public static String readFileToString() throws IOException {File dirs = new File("."); String filePath = dirs.getCanonicalPath() + File.separator+"src"+File.separator+"TestRead.java"; StringBuilder fileData = new StringBuilder(1000);//Constructs a string buffer with no characters in it and the specified initial capacity BufferedReader reader = new BufferedReader(new FileReader(filePath)); char[] buf = new char[1024]; int numRead = 0; while ((numRead = reader.read(buf)) != -1) { String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); buf = new char[1024]; } reader.close(); String returnStr = fileData.toString(); System.out.println(returnStr); return returnStr; }

一、图解Java中String不可变性相关推荐

  1. 如何理解java中String的不可变性

    文章目录 问题 String类的声明 final关键字的作用 String的不变性 String的不变性有哪些好处 String真的是绝对不可变吗 问题 为什么大家都在说String是不可变的? St ...

  2. java中字符串的创建_【转载】 Java中String类型的两种创建方式

    本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...

  3. java add offer_图解Java中的5大队列!(干货收藏)

    Java 中的队列有很多,例如:ArrayBlockingQueue.LinkedBlockingQueue.PriorityQueue.DelayQueue.SynchronousQueue等,那它 ...

  4. Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释

    Java中String类的concat方法 在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变 这两点从源码中对String的声明可以体现: private ...

  5. 【翻译】Java中String, StringBuffer, StringBuilder的区别

    2019独角兽企业重金招聘Python工程师标准>>> String 是  Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...

  6. java中String new和直接赋值的区别

        Java中String new和直接赋值的区别     对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...

  7. java中String的常用方法

    java中String的常用方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len ...

  8. java中String,int,Integer,char、double类型转换

    java中String,int,Integer,char.double类型转换----https://www.cnblogs.com/kangyu222/p/5866025.html 转载于:http ...

  9. java中String对象和String变量

    2019独角兽企业重金招聘Python工程师标准>>> java中String对象和String变量 (2011-12-27 20:40:27) 转载▼ 标签: it 最近在论坛上看 ...

  10. Java中String类的方法及说明

    String : 字符串类型 一.构造函数      String(byte[ ] bytes):通过byte数组构造字符串对象.      String(char[ ] value):通过char数 ...

最新文章

  1. 11.32 php扩展模块装安
  2. 守护线程Daemon的理解
  3. 这个黑科技小音箱,不用连蓝牙、一触即播
  4. java钱币换算_Java编写钱币转换为大写程序
  5. Python小白的数学建模课-23.数据拟合全集
  6. 全球首家!比亚迪宣布停止燃油汽车整车生产
  7. Docker的常规应用手册
  8. 学NLP不懂这个项目?快别去秋招了,你HOLD不住的!
  9. 网络爬虫Heritrix源码分析(一) 包介绍
  10. toString方法和valueOf方法以及Symbol.toPrimitive方法的学习
  11. CAD绘制带角度的矩形阵列
  12. android opencv 识别水果,opencv – 在一盘水果中检测香蕉或苹果,成功率 90%. (见图)...
  13. 数据库驱动加载失败,数据库连接失败
  14. 移动端那些事儿(二)jquery手势插件之jGestures
  15. 使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书
  16. git 推送出现 “fatal: The remote end hung up unexpectedly“ 解决方案
  17. 「维基解密」:西游记死亡人数
  18. JAVA SE 005——类型转换
  19. 自动驾驶行业观察之2023上海车展-----车企发展趋势(1)
  20. 批量重命名文件 - Renamer JAVA File

热门文章

  1. lumen mysql 事务_数据库事务不执行回滚?
  2. PHP两个二维数组数据处理:字段值相等,则赋值给另一个数组
  3. LINUX使用sed修改文件,如果包含变量,需要使用双引号
  4. 使用cJSON产生json字串
  5. 旁边一位员工天天跟别人聊天,主管都不敢管,那你当什么主管
  6. CreateProcess()无法启动应用?
  7. 如果没有证据,判断一个事件的主谋的方法
  8. C# 读写txt文件 写txt(IO) TXT追加
  9. angularjs动态侧边栏菜单_极速PDF的工具菜单栏不见了如何恢复?
  10. 实施工程师是干嘛的_CTO大怒:300万建设数据中台,啥也没看见,我要它干嘛?...