3.6.3 不可变字符串
3.6.3 不可变字符串
3.6.3 不可变字符串
类没有提供用于修改字符串的方法。如果希望将的内容修改为“Help!”,不能直接地将的最后两个位置的字符修改为‘p’和‘!’。这对于C程序员来说,将会感到无从下手。如何修改这个字符串呢?在Java中实现这项操作非常容易。首先提取需要的字符,然后再拼接上替换的字符串:
上面这条语句将当前值修改为“Help!”。
由于不能修改Java字符串中的字符,所以在Java文档中将类对象称为不可变字符串,如同数字3永远是数字3一样,字符串“Hello”永远包含字符H、e、l、l和o的代码单元序列,而不能修改其中的任何一个字符。当然,可以修改字符串变量,让它引用另外一个字符串3.6.3 不可变字符串,这就如同可以将存放3的数值变量改成存放4一样。
这样做是否会降低运行效率呢?看起来好像修改一个代码单元要比创建一个新字符串更加简洁。答案是:也对,也不对。的确,通过拼接“Hel”和“p!”来创建一个新字符串的效率确实不高。但是,不可变字符串却有一个优点:编译器可以让字符串共享。

为了弄清具体的工作方式java 字符串转数字,可以想象将各种字符串存放在公共的存储池中。字符串变量指向存储池中相应的位置。如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。
总而言之,Java的设计者认为共享带来的高效率远远胜过于提取、拼接字符串所带来的低效率。查看一下程序会发现:很少需要修改字符串,而是往往需要对字符串进行比较(有一种例外情况,将源自于文件或键盘的单个字符或较短的字符串汇集成字符串。为此,Java提供了一个独立的类java 字符串转数字,在3.6.8节中将详细介绍)。
C++注释:在C程序员第一次接触Java字符串的时候,常常会感到迷惑,因为他们总将字符串认为是字符型数组:
这种认识是错误的,Java字符串更加像char*指针,

当采用另一个字符串替换的时候,Java代码主要进行下列操作:

的确,现在指向字符串“Help!”。即使一名最顽固的C程序员也得承认Java语法要比一连串的调用舒适得多。然而java 字符串转数字,如果将赋予另外一个值又会怎样呢?
这样做会不会产生内存遗漏呢?毕竟,原始字符串放置在堆中。十分幸运,Java将自动地进行垃圾回收。如果一块内存不再使用了,系统最终会将其回收。
对于一名使用ANSI C++定义的类的C++程序员,会感觉使用Java的类型更为舒适。C++对象也自动地进行内存的分配与回收。内存管理是通过构造器、赋值操作和析构器显式执行的。然而3.6.3 不可变字符串,C++字符串是可修改的,也就是说,可以修改字符串中的单个字符。
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » 3.6.3 不可变字符串
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

