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

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: abc
b: ABC
a==b: false
c: abc
a==c: true

运行结果分析:

           字符串a指向"abc",全为小写;字符串b由a得来,指向"ABC";这时a的内容并没有变化,也就证明了Java中String的不变性。
           后面利用"a==b"来判断a,b是否指向同一个对象,返回值为false,也能证明String的不变性。

           对于字符串c的例子说明如果a没有发生变化,那么不返回也不需要返回新字符串,所以"a==c"的返回值为true。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值