Java提供了三个字符串类:String类、StringBuffer类、StringBuilder类
1.创建String类对象
public class StringDemo(){
public static void main(String[] args){
char ch1[]={'H','e','l','l','o'};
String str1=new String(ch1);//刷题的时候使用过这种创建方法String str2=new String(ch1,1,2);//使用字符数组中0下标开始的2个字符创建一个字符串
String str3="Hello";//直接使用""引号创建
System.out.println("str1="+str1);//Hello
System.out.println("str2="+str2);//el
System.out.println("str3="+str3);//Hello
}
}
注:new String("Hello")实际创建了两个String对象,一个是"Hello"通过""双引号创建,另一个通过new创建的,只不过创建时期不同,一个是编译期,一个是运行期。
2.字符串的长度及提取单个字符串
public int length();返回字符串的长度。//一个汉字字符算一个长度;注意区分length方法。
public boolean isEmpty();判断字符串是否为空("")。//字符串值为null时方法报空指针异常错误。
public char charAt(int index);返回字符串指定位置index的字符。
3.字符串连接及子串
public String concat(String str);将调用字符串与参数字符串连接起来,产生一个新的字符串。//String str="Hello"+" world!";
public String subString(int beginIndex, int endIndex);从beginIndex下标至endIndex产生一个子字符串。(前包括后不包括)
public String replace(char oldChar, char newChar);将字符串中所有oldChar字符改变为newChar字符,并返回一个新的字符串。
public String toUpperCase();大写字母。
public String toLowerCase();将字符串中所有字符转换成小写字母。
public boolean startsWith(String prefix);返回字符串是否以某个字符串prefix开始。
public boolean endsWith(String prefix);返回字符串是否以某个字符串prefix结束。
public String trim();返回去掉了前后空白字符的字符串对象。//注意中间的空格不去除。
4.字符串查找
public int indexOf(int/char/String, int fromIndex);查找字符从fromIndex开始第一次出现的位置。//返回值为原字符串下标。
public int lastIndexOf(int/char/String, int endIndex);查找字符到endIndex为止最后一次出现的位置。//查找不成功返回-1
5.字符串与数组的转换
public char[] toCharArray();将字符串转换成字符数组。
public void getChars(int begin, int end, char[] dst, int dstBegin);将字符串从begin到end之间的字符复制到字符数组dst中,dstBegin为dst数组的起始位置。
6.字符串的解析
public String[] split(String regex, int n);regex为正则表达式,n为表达式使用次数。//n=0或n<0使用尽可能多次;n>0至多使用n-1次,若数组长度小于n,则数组最后一项包含出最后一个匹配的分隔符外的所有内容。
7.字符串的比较
- 字符串相等
String s1=new String("Hello");
String s2=new String("Hello");
System.out.println(s1==s2);//false
Java语言中使用“==”比较引用类型的数据对象时,比较的是引用(地址)是否相等,即是否指向同一地址。只有两个引用指向同一对象时,结果才为true。上面使用构造方法创建的两个对象是不同的,因此s1和s2的引用是不同的。
String s3="Hello";
String s4="Hello";
System.out.println(s3==s4);//true
s3和s4是用字符串常量创建的两个对象 。字符串常量存储和对象存储不同,字符串常量存储在常量池中,对内容相同的字符串常量只有一个副本,因此s3和s4指向的是一个对象。
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//true
由此可见,“==”用来比较两个引用值是否相等,如果要比较两个对象的内容是否相等,可使用equals()方法。
- 字符串大小比较
public int compareTo(String anotherString);返回值为0,相等;返回值<0,当前字符串小于参数字符串;返回值>0,当前字符串大于参数字符串。
- 忽略大小写比较
public boolean equalsIgnoreCase(String anotherString);
public boolean compareToIgnoreCase(String anotherString);
8.String对象的不变性
Java程序中,创建一个String对象,就不能对其内容进行改变。
9.String的intern()方法
运行时可以向String常量池中添加对象。