Java中的String的 方法归类 及其 不可变性

来源:互联网 发布:杀人软件完整版 编辑:程序博客网 时间:2024/06/10 03:55
Technorati 标签: Java,String,方法,函数,归类,不可变性

       可以证明,字符串操作是计算机程序设计中最常见的行为。——摘自《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。

获取信息操作   字符串长度length() 比较字符串引用“==” 比较字符串内容equals()  或 compareTo() 已知位置,找字符charAt() 已知字符(串),找位置indexOf() 或 lastIndexOf() 判断开头和结尾startWith()  或 endWith() 其他类型转换为字符串valueOf()更改操作   连接字符串“+” 或者 concat() 替换子字符串replace() 获取子字符串subString() 分割字符串split() 更换大小写toUpperCase()、toLowerCase() 去除空白符trim()

        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。

原创粉丝点击