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 为了提高效率节约内存,把具有相同字符序列的字符串直接量使用同一个实例,这样的实例称为限定的字符串,例如:

Java - String 类

字符串的替换和分割

虽然字符串对象内容不可改变,但是可以根据源字符串修改形成新的字符串返回,这也相当于能改变了

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 ); // 用分隔符将字符串分割成字符串数组

Java - String 类

字符串与数组之间的转换

字符串和数组可以相互转换

字符串→字符数组,可以用 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'} );

Java - String 类