第七章 String类
字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。
内存分析:
String str1="abc"; String str2="abc"; char[] charArray={'a','b','c'}; String str3=new String(charArray); System.out.println(str1==str2); System.out.println(str1==str3); System.out.println(str2==str3);
结果:
true false false
分析:
双引号直接写的字符串在常量池中,new的不在池中。
对于基本类型来说,==是进行数值的比较
对于引用类型来说,==是进行地址值的比较
str1和str2的地址相同,所以==结果为true,str3的地址不一样,所以==的结果为false。
String常用方法
public static void main(String[] args) { String str1="abc"; String str2="abc"; char[] charArray={'a','b','c'}; String str3=new String(charArray); //equals()方法:比较内容 System.out.println("equals="+str1.equals(str3)); //length()方法:返回字符串字符个数 System.out.println("length="+str1.length()); //charAt():返回指定索引处的字符 System.out.println("charAt="+str1.charAt(0)); //indexOf():返回首次出现索引位置 System.out.println("indexOf="+str1.indexOf("bc")); //substring():截取一段[a,b) System.out.println("substring="+str1.substring(1,3)); //toCharArray():返回字符数组 char[] array=str1.toCharArray(); System.out.print("toCharArray="); for (int i = 0; i < array.length; i++) { System.out.print(array[i]+" "); } System.out.println(); //replace():用新的字符串代替旧的字符串 String replace = str1.replace("bc", "new"); System.out.println("replace="+replace); //split():将字符串分割得到字符串组 String str4="yyqx hm hhh"; String[] split = str4.split(" "); System.out.print("split="); for (int i = 0; i < split.length; i++) { System.out.print(split[i]+" "); } System.out.println(); }
结果:
equals=true length=3 charAt=a indexOf=1 substring=bc toCharArray=a b c replace=anew split=yyqx hm hhh