一、图解Java中String不可变性
这里有一堆例子来说明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不可变性相关推荐
- 如何理解java中String的不可变性
文章目录 问题 String类的声明 final关键字的作用 String的不变性 String的不变性有哪些好处 String真的是绝对不可变吗 问题 为什么大家都在说String是不可变的? St ...
- java中字符串的创建_【转载】 Java中String类型的两种创建方式
本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...
- java add offer_图解Java中的5大队列!(干货收藏)
Java 中的队列有很多,例如:ArrayBlockingQueue.LinkedBlockingQueue.PriorityQueue.DelayQueue.SynchronousQueue等,那它 ...
- Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释
Java中String类的concat方法 在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变 这两点从源码中对String的声明可以体现: private ...
- 【翻译】Java中String, StringBuffer, StringBuilder的区别
2019独角兽企业重金招聘Python工程师标准>>> String 是 Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...
- java中String new和直接赋值的区别
Java中String new和直接赋值的区别 对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...
- java中String的常用方法
java中String的常用方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len ...
- java中String,int,Integer,char、double类型转换
java中String,int,Integer,char.double类型转换----https://www.cnblogs.com/kangyu222/p/5866025.html 转载于:http ...
- java中String对象和String变量
2019独角兽企业重金招聘Python工程师标准>>> java中String对象和String变量 (2011-12-27 20:40:27) 转载▼ 标签: it 最近在论坛上看 ...
- Java中String类的方法及说明
String : 字符串类型 一.构造函数 String(byte[ ] bytes):通过byte数组构造字符串对象. String(char[ ] value):通过char数 ...
最新文章
- 11.32 php扩展模块装安
- 守护线程Daemon的理解
- 这个黑科技小音箱,不用连蓝牙、一触即播
- java钱币换算_Java编写钱币转换为大写程序
- Python小白的数学建模课-23.数据拟合全集
- 全球首家!比亚迪宣布停止燃油汽车整车生产
- Docker的常规应用手册
- 学NLP不懂这个项目?快别去秋招了,你HOLD不住的!
- 网络爬虫Heritrix源码分析(一) 包介绍
- toString方法和valueOf方法以及Symbol.toPrimitive方法的学习
- CAD绘制带角度的矩形阵列
- android opencv 识别水果,opencv – 在一盘水果中检测香蕉或苹果,成功率 90%. (见图)...
- 数据库驱动加载失败,数据库连接失败
- 移动端那些事儿(二)jquery手势插件之jGestures
- 使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书
- git 推送出现 “fatal: The remote end hung up unexpectedly“ 解决方案
- 「维基解密」:西游记死亡人数
- JAVA SE 005——类型转换
- 自动驾驶行业观察之2023上海车展-----车企发展趋势(1)
- 批量重命名文件 - Renamer JAVA File
热门文章
- lumen mysql 事务_数据库事务不执行回滚?
- PHP两个二维数组数据处理:字段值相等,则赋值给另一个数组
- LINUX使用sed修改文件,如果包含变量,需要使用双引号
- 使用cJSON产生json字串
- 旁边一位员工天天跟别人聊天,主管都不敢管,那你当什么主管
- CreateProcess()无法启动应用?
- 如果没有证据,判断一个事件的主谋的方法
- C# 读写txt文件 写txt(IO) TXT追加
- angularjs动态侧边栏菜单_极速PDF的工具菜单栏不见了如何恢复?
- 实施工程师是干嘛的_CTO大怒:300万建设数据中台,啥也没看见,我要它干嘛?...