Java中的String的 方法归类 及其 不可变性
来源:互联网 发布:杀人软件完整版 编辑:程序博客网 时间:2024/06/10 03:55
可以证明,字符串操作是计算机程序设计中最常见的行为。——摘自《java编程思想》
英文:String manipulation is arguably one of the most common activities in computer programming. ——摘自《Thinking in Java》
上面这句话是Bruce Eckel(作者,绝对的牛人),在《Java编程思想》书中开讲String时的第一句话。其实不只是java语言,在任何编程语言中,数据处理无外乎就是处理字符串和数字。而在Java中,对于字符串的处理很大最直接的就是String类(其他还有StringBuilder、StringBuffer类以及正则表达式的应用),最基础的也是String类,所以我们很有必要搞清楚Java中String的特性和实现机制。
1. String的基本介绍
String按照字面理解,就可知道代表一串字符。我总结了对字符串最多的操作,见下表。如有遗漏,请大家指正啊。
说明:在下表中,为了方便书写,方法的参数省略,参数的详细信息参考Java API。
String是常量,我们常称其为不可变性,意思是一旦创建就不能更改。
所以对于上面的“更改操作”,返回值都是字符串,但并不是对源字符串进行更改,而是返回了新的字符串。下面有测试代码。
小实验:如果查看Java API文档中对String的方法的说明,会发现用了很多的“return a new String ”。
2. 验证String的不可变性
所谓String的不可变性,是说一旦字符串被创建,对其所做的任何修改都会生成新的字符串对象。
代码如下:
public static void main(String[] args) { String a = "abc"; String b = a.toUpperCase(); System.out.println("a: " + a); System.out.println("b: " + b); System.out.println("a==b: "+ (a==b)); //当a不发生变化时,不返回新字符串。 String c = a.toLowerCase(); System.out.println("c: " + c); System.out.println("a==c: "+ (a==c));}
运行结果:
a: abcb: ABCa==b: falsec: abca==c: true
运行结果分析:
字符串a指向"abc",全为小写;字符串b由a得来,指向"ABC";这时a的内容并没有变化,也就证明了Java中String的不变性。
后面利用"a==b"来判断a,b是否指向同一个对象,返回值为false,也能证明String的不变性。
对于字符串c的例子说明如果a没有发生变化,那么不返回也不需要返回新字符串,所以"a==c"的返回值为true。
- Java中的String的 方法归类 及其 不可变性
- 详细讲解Java中的方法参数传递机制,介绍string的不可变性
- String的不可变性
- String的不可变性
- String的不可变性
- String的不可变性
- java之String对象的不可变性
- 图解String类型的不可变性及其原因
- 图解Java String不可变性
- String类的不可变性
- String 类的不可变性
- String对象的不可变性
- Android中的java基础(三)——String的不可变性
- Java中String类型的不可变性和驻留池
- 深入理解java String 对象的不可变性
- Java中String类不可变性的好处
- Java的string类常量池及不可变性
- Java问题探讨之String的不可变性
- startActivityForResult()的用法
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
- 关于C语言的逻辑短路
- 用 Split 函数将有序字符串(如"A1,A2,A3,A4,A5,A6")分散拆开为数组
- 做一个项目
- Java中的String的 方法归类 及其 不可变性
- Android刷机原理之recovery内部工作原理
- ati driver for linux
- 转载:dota6.70改动【版本】掌门人独家翻译:DotA 6.70中文改动日志
- 模拟鼠标,指定时间
- 龙芯科普
- vmware虚拟机 磁盘分区扩容。(调整vmware虚拟机硬盘空间的方法 )
- error C2065: 'IMAGE_SIZEOF_BASE_RELOCATION' : undeclared identifier
- dialplan 学习之简单入门实例