Java 1.1.3 修改字符串、不可变字符串
修改字符串
String类没有提供用于修改字符串的方法。如果希望将 greeting 的内容修改为“ Help!”, 不能直接地将 greeting的最后两个位置的字符修改为 ‘ p’ 和 ‘ ! 。这对于 C 程序员来说,将会感到无从下手 。如何修改这个字符串呢?
在 Java中实现这项操作非常容易。
首先提取需要的字符, 然后再拼接上替换的字符串:
greeting = greeting.substring(0, 3) + "p!";
//上面这条语句将 greeting 当前值修改为“ Help !”。
称为不可变字符串
由于不能修改 Java 字符串中的字符, 所以在 Java 文档中将 String类对象称为不可变字符串, 如同数字 3 永远是数字 3—样,字符串“ Hello” 永远包含字符 H、 e、1、1 和 o 的代码单元序列, 而不能修改其中的任何一个字符。当然, 可以修改字符串变量 greeting,让它引用另外一个字符串, 这就如同可以将存放 3 的数值变量改成存放 4一样。
这样做是否会降低运行效率呢?
看起来好像修改一个代码单元要比创建一个新字符串更 加简洁。答案是:也对,也不对。
的确, 通过拼接“ Hel” 和“ p!” 来创建一个新字符串的 效率确实不高。但是,不可变字符串却有一个优点:编译器可以让字符串共享。
为了弄清具体的工作方式,可以想象将各种字符串存放在公共的存储池中。字符串变量 指向存储池中相应的位置。如果复制一个字符串变量, 原始字符串与复制的字符串共享相同 的字符。
总而言之,Java 的设计者认为共享带来的高效率远远胜过于提取、 拼接字符串所带来的 低效率。查看一下程序会发现:很少需要修改字符串, 而是往往需要对字符串进行比较(有一种例外情况,将来自于文件或键盘的单个字符或较短的字符串汇集成字符串。)
Java 1.1.3 修改字符串、不可变字符串相关推荐
- OC不可变字符串和可变字符串(1)
在OC中,字符串有:不可变字符串(NSString).可变字符串(NSMutableString). 可变字符串的方法继承于不可变字符串. 可变字符串 1.初始化一个字符串对象(除以下方法外,还可以使 ...
- Objective-C学习笔记2013[NSString]字符串[可变字符串中,加用app减用delete]
Objective-C学习笔记 小常识: NS是Cocoa类对象类型的前缀,来源于史蒂夫-乔布斯被苹果开除那段时间建立的公司NeXT. @是Cocoa元素的前缀,很多地方我们会看到,比如接下来... ...
- Java · 认识 String 类(上)· 创建字符串 · 字符串比较相等 · 字符串常量池 · 字符串不可变 · 字符字节与字符串
目录 一.创建字符串 二.字符串比较相等 三.字符串常量池 3.1 直接赋值的内存情况 3.2 采用构造方法的内存情况 四.理解字符串不可变 五.字符.字节与字符串 5.1 字符与字符串 5.2 字节 ...
- [Java]_[初级]_[使用正则高效替换字符串的多个占位符为多个值]
场景 在开发基于模板内容的Java程序时, 比如一个邮件内容模板,在内容里放置一些占位符$email,$name等来作为替换实际内容的符号.那么这时候如何做才可以少生成不必要的String字符串,从而 ...
- JAVA day13,14 API、Object类、日期时间类(long,Date,Calendar,DateFormat)、String类(字符串,可变长字符串)、正则表达式、包装类
1.API API(Application Programming Interface),应⽤程序编程接⼝.Java API是⼀本程序员的"字 典",是JDK提供给我们使⽤的类的说 ...
- Java系列(34)——可变字符串
本系列博客汇总在这里:Java系列_汇总 目录 一.StringBuffer 概述 二.StringBuffer 和 String 的区别 三.StringBuffer 的 append 方法 四.可 ...
- 八门神器java版本_【修改教程】java基础知识字符串处理_八门神器
[Java基础知识]字符串处理1.获取字符串的长度 String s = "AIDE"; System.out.println(s "长度为:" s.lengt ...
- 如何给女朋友解释为什么Java里面的String对象是不可变的?
点击关注公众号,Java干货及时送达 String的不变性 String在Java中特别常用,相信很多人都看过他的源码,在JDK中,关于String的类声明是这样的: public final cla ...
- Java 中的 String 真的是不可变的吗
转载自 Java 中的 String 真的是不可变的吗 我们都知道 Java 中的 String 类的设计是不可变的,来看下 String 类的源码. public final class Str ...
最新文章
- 使用FPM快速生成RPM包
- 正则表达式,解决要么有要有没有,但必须开头
- php判断单向链表中有没有环,python判断链表是否有环的实例代码
- saxparser_使用SaxParser和完整代码进行XML解析
- 论文浅尝 | 面向单关系事实问题的中文问答模型
- EMR StarRocks 极速数据湖分析原理解析
- 07树莓派下的浏览器
- 介绍struct bus_type非常好的
- math、numpy、pandas NaN 判断
- matlab转变图像位深,[转载]matlab 图像处理命令 (转)
- python修复不了_python-如何修复cm.spectral(模块“ matplotlib.cm”...
- 如何快速调出软键盘_*小星推荐*—如何快速的制作模具3D装配档
- [转载]JSONP跨域的原理解析
- 改变了的Windows MediaPlayer9.0SDK控制集
- ML--HMM(隐马尔可夫模型及python的实现1)
- 自定义流程gooflow.08 demo在线演示
- 【专升本计算机】计算机权威复习题(基础知识、操作系统、计算机网络)
- Ti的C28x系列的DSP(28069)(28377D)使用经验,CMD文件
- ROVIO mobile webcam 路威机器人
- namesilo修改域名服务器,Namesilo, godaddy和万网域名修改NS的方法