描述
以下程序演示了String类的几个常用方法,包括比较字符串、取得字符串长度、拆分字符串、获取子串、字符串转换成字符数组、获取字符串位置、替换字符串等方法。
案例
public class StringTest {
public static void main(String[] args) {
//比较字符串
String str1 = "自强不息"; //字符串常量
String str2 = "自强不息"; //字符串常量
String str3 = new String("自强不息");
String str4 = new String("自强不息");
System.out.println("str1 == str2(比较字符串常量):" + (str1 == str2));
System.out.println("str3 == str4(比较引用):" + (str3 == str4));
System.out.println("sstr1.equals(str4)(比较内容):" + str1.equals(str4));
//拆分字符串
String s1 = "中华,人民,共和国";
String []s2 = s1.split(","); //用逗号作为分隔符拆分字符串
for(String str : s2){
System.out.print(str + " ");
}
//获取子串
String s3 = "0123456789ABCDEFGH";
String s4 = s3.substring(6,14); //取得子串
System.out.println("\n子串:" + s4);
//字符串转换成字符数组
String s5 = "幸福都是奋斗出来的!";
char []chArr = s5.toCharArray(); //字符串转换为字符数组
for(int i = 0; i < chArr.length; i++){
System.out.print(chArr[i] + " ");
}
//获取字符串位置
int location = s5.indexOf("奋斗"); //获取字符串首次出现的位置
System.out.println("\n奋斗的位置是:" + location);
//替换字符串
String s6 = "自##力##更##生";
String s7 = s6.replaceAll("##","***");//把字符串中的##替换成***
System.out.println("替换结果:" + s7);
}
}
分析
第8、9行比较两个字符串常量的引用,第10行的str1.equals(str4)比较的是str1与str4的内容。
字符串是引用类型,关系运算符”==“比较引用(地址),但比较字符串内容更有价值。采用String类的equals()、equalsIgnoreCase()和CompareTo()等方法可以比较内容。
Java语言对String类采用共享设计方式。Java系统有一个字符串对象池保存字符串对象,如果对象池保存了字符串,则直接取出使用,例如程序案例第4、5行的字符串常量都是自强不息,因此str1和str2直接引用已有堆空间。