1.字符串的比较
1 public voidrun(){2 //str1在池中
3 String str1 = new String("String");4 //str2,str3 存在于堆中
5 String str2 = "String";6 String str3 = "strin"+"g";7
8 System.out.println(str1 == str2);//false
9
10 System.out.println(str1.equals(str2));//true
11
12 System.out.println(str1.equalsIgnoreCase(str3));//true
13
14 System.out.println(str1.toLowerCase().equals(str3));//true
15
16 }
•==”和equals()有什么区别呢?
equals():检查组成字符串内容的字符是否完全一致
==:判断两个字符串在内存中的首地址,即判断是否是同一个字符串对象
2.字符串的连接
1 public voidrun(){2 //str1在池中
3 String str1 = new String("String");4 //str2存在于堆中
5 String str2 = "String";6 //方法1:
7 String str3 = str2+"fff";8 //方法2:
9 String str4 = str2.concat("ffff");10
11 }
3.字符串的提取
方 法
说 明
public int indexOf(int ch)
搜索第一个出现的字符ch(或字符串value)
public int indexOf(String value)
public int lastIndexOf(int ch)
搜索最后一个出现的字符ch(或字符串value)
public int lastIndexOf(String value)
返回出现第一个匹配的位置,如果没有找到字符或字符串,则返回-1;
方 法
说 明
public String substring(int index)
提取从位置索引开始的字符串部分
public String substring(int beginindex, int endindex)
提取beginindex和endindex之间的字符串部分
public String trim()
返回一个前后不含任何空格的调用字符串的副本
beginindex: 字符串的位置从0开始算,endindex: 字符串的位置从1开始算;
4.字符串的拆分
•String类提供了split()方法,将一个字符串分割为子字符串,结果作为字符串数组返回
1 public voidrun(){2
3 String words="长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山";4 String[] printword=new String[100];5 System.out.println("***原歌词格式***\n"+words);6 System.out.println("\n***拆分后歌词格式***");7 printword=words.split(" ");8 for(int i=0;i
12
13 }
5.字符串的创建
•在Java执行时会维护一个String池(Pool),当直接在程序中使用“”来包括一个字符串时,该字符串就会在String池中。
•对于一些可以共享的字符串对象,会先在String池中查找是否存在相同的String内容(字符相同),如果有就直接返回,而不是直接创造一个新的String对象,以减少内存的耗用。
在intern()方法被调用时,如果池(Pool)中已经包括了相同的String对象(相同与否由equals()方法决定),那么会从池中返回该字符串,否则原String对象会被加入池中,并返回这个String对象的引用。