Java中的字符串总结(一)

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常量池中添加对象。

猜你喜欢

转载自blog.csdn.net/u013814184/article/details/82633238