从概念上讲, Java 字符串就是 Unicode 字符序列例如, 串 Unicode 就是由 7 个 Unicode 字符 Unicode 组成的 Java 没有内置的字符串类型, 而是在标准 Java 类库中提供了一个预定义类, 很自然地叫做 String 每一个用双引号括起来的字符串都是 Stirng 类的一个实例
Java 语言中的字符串和 C++ 字符串有一个非常大的不同, Java 中的 String 类没有提供用于修改字符串的方法例如, 如果希望将 greeting 字符串变量中的内容 Help! 改为 Hello, 不能直接将 greeting 的后两个字符修改为'l'和'o'而修改的方法则是需要依赖两个步骤, 即先将字符串进行截断, 然后再将修改的目标拼接到截取的字符串上, 从而完成对字符串的修改
下面为您介绍 Java 语言中 String 类的几个常用方式, 分别是: 子串的获取 (截取) 拼接, 以及字符串的检测
1. 子串的获取(截取)
String 类的 substirng 方法可以从一个较大的字符串提取出一个子串, 例如:
- String greeting = Hello;
- String s = greeting.substring(0,3);
这两个语句创建了一个由字符 Hel 组成的字符串还有一点是需要您注意的就是, 这种子串的获取是对原字符串没有影响的另外, sustring 方法还有一个非常好的优点, 即后面的参数值减去前面的参数值, 就是子串的长度
2. 字符串的拼接
与绝大多数的程序设计语言一样, Java 语言允许使用 + 号连接 (拼接) 两个字符串而且, 最关键的是, 在 Java 语言中, 不仅可以使用 + 号拼接两个字符串, 而且可以使用一个字符串拼接一个非字符串的变量例如:
- int age = 15;
- String rating = PG + age;
此时, rating 被设置为 PG15Java 语言的这种特性经常被使用在输出语句中, 例如:
System.out.println(The answer is + answer);
这是一条合法的语句, 并且会打印出所希望的结果
3. 字符串的比较(相等的比较)
在 Java 语言中, 绝对不能使用 == 检测两个字符串是否相等因为这个运算符只能够确定两个字符串是否被放置在同一个位置上当然, 如果字符串确实是放置在同一个位置上, 它们必然相等, 但是, 两个字符串不放在同一个位置的时候还是非常多的, 因为在进行编程时 + 和 substring 使用是非常频繁的, 这两个操作的结果就是导致字符串不共享, 所以, 对字符串进行是否相等的判断时, 绝对不能使用 ==
进行字符串的相等性判断, 应该使用 String 类提供的一个方法, 即 s.equals(a)方法该方法的含义是, 如果字符串 s 和字符串相等, 则返回 true, 否则返回 false
说到这里, 您可能一直有一个疑问, 为什么 Java 语言中的字符串不允许修改单个字符呢? 首先, 我们需要说清楚的是, Java 语言不能修改字符串, 给字符串带来了一个优点, 就是 Java 编译器可以让字符串共享也就是说, Java 语言中的字符串其实是放在一个共享池中的, 字符串变量的值只是一个指向存储池中位置的引用, 如果复制一个字符串变量, 原始字符串与复制的字符串其实并不是两份, 而是共享相同的字符其次, 在这个基础上, Java 设计者认为共享带来的高效率远远胜过修改字符串所带来的低效率因为查看一下程序你就会发现, 其实很少需要修改字符串, 而是往往需要对字符串进行比较
来源: http://www.jianshu.com/p/c7b6c8ff7cd3