Java - String 类
概述
Sting 对象是不可改变的,即一旦创建,所引用的内容就不能再改,但是引用变量可以改,可以指向另一个内容。
前面介绍过字符串,可以通过 charAt(index) 得到指定位置的字符,length() 返回字符串的大小,substring 返回字符串的字串,indexOf 和 lastIndexOf 返回第一个或者最后一个匹配的字符或者字符串,下面更深入地探讨。
String 类中有13个构造方法以及40多个处理字符的方法,很有用。
构造字符串
可以用字符串直接量或字符数组创建一个字符串对象,如下所示:
String message = new String("Welcome to Java);
Char[] charArray = { 'G', 'o', 'o', 'd', ' ', 'D', 'a', 'y' };
String message = new String(charArray);
Java将字符串直接量看作 String 对象。所以,下面的语句是合法的:
String message = "Welcome to Java";
不可变字符串
String 引用所指向的对象内容是不可变的,例如:
String s = "Java"; s = "HTML";
s 先指向"Java",后来又指向"HTML","Java"对象此时仍然存在,但是无法访问,会被JVM自动回收。
限定字符串
因为字符串对象不可改变,但又会频繁地使用,所以 JVM 为了提高效率节约内存,把具有相同字符序列的字符串直接量使用同一个实例,这样的实例称为限定的字符串,例如:
字符串的替换和分割
虽然字符串对象内容不可改变,但是可以根据源字符串修改形成新的字符串返回,这也相当于能改变了
String 类提供了一些替换和分割字符串的方法,例如:
String replace( char oldChar, char newChar ); // 将字符串中的 oldChar 都换成 newChar
String replaceFirst( String oldString, String newSting ); // 将第一个匹配的字符串换成新的字符串
String replaceAll( String oldString, String newSting ); // 置换所有匹配的字符串
String[] split( String delimiter ); // 用分隔符将字符串分割成字符串数组
字符串与数组之间的转换
字符串和数组可以相互转换
字符串→字符数组,可以用 toCharArray 方法,例如:
char[] chars = "Java".toCharArray();
如果只想选其中一部分,可以用 getChars( int srcBegin, int srcEnd, char[] dst, int dstBegin )方法,例如:
char[] dst = {'J', 'A', 'V', 'A', '1', '3', '0', '1'};
"CS3720".getChars(2, 6, dst, 4);
// 从字符串下标为2的字符开始到6结束(不包含6),复制到从下标为4开始的字符数组dst
return dst = {'J', 'A', 'V', 'A', '3', '7', '2', '0'};
字符数组→字符串,可以用构造方法 String(char[]),或者方法 valueOf(char[]),例如:
String str = new String( new char[]{'J', 'A', 'V', 'A'} );
String str = String.valueOf( new char[]{'J', 'A', 'V', 'A'} );