常用方法如下:
1.獲取字符串長度:
strmsg.length();
2.字符串轉爲字節:
strmsg.getBytes();
3.截取字符串 從第幾位開始
strmsg.substring(int beginIndex);
4.截取字符串 從第幾位開始到第幾位結束
strmsg.substring(int beginIndex,int endIndex);
5.比較兩個字符串是否相等,後者不區分大小寫
strmsg.equals(anObject);
strmsg.equalsIgnoreCase(anotherString);
6.替換字符串中的某個字符
strmsg.replace(oldChar, newChar);
7.去除收尾空格
strmsg.trim();
8.獲取從第幾位到第幾位的字符數組
strmsg.getChars(int srcBegin, int srcEnd, char dst[], int dstBegin);
9.將字符串轉爲字符數組
strmsg.toCharArray();
10.比較兩個字符串大小,後者不區分大小寫
strmsg.compareTo(String anotherString);
strmsg.compareToIgnoreCase(String str);
11.字符串以suffix字符串開始,結束
strmsg.startsWith(suffix);
strmsg.endsWith(suffix);
測試代碼:
package demo;
public class StringUtils {
public static void main(String[] args) {
StringDemo();
}
public static void StringDemo() {
String strmsg="are you ok!";
// length()字符串長度
System.out.println("字符串長度:"+strmsg.length());
// charAt(2)截取一個字符
System.out.println("字符:"+strmsg.charAt(2));
// getchars()截取多個字符並由其他字符串接收
char[] ss=new char[10];
strmsg.getChars(0, 6, ss, 0);
System.out.println("截取字符串到字符數組:"+new String(ss));
// getBytes()將字符串變成一個byte數組
System.out.println("byte數組"+new String(strmsg.getBytes()));
// toCharArray()將字符串變成一個字符數組
char[] b=strmsg.toCharArray();
System.out.println("字符數組:"+new String(b));
// equals()和equalsIgnoreCase()比較兩個字符串是否相等,前者區分大小寫,後者不區分
System.out.println("比較兩個字符串是否相等:"+strmsg.equals("are you ok!"));
System.out.println("比較兩個字符串是否相等(不區分大小寫):"+strmsg.equalsIgnoreCase("are you OK!"));
// startsWith()和endsWith()判斷字符串是不是以特定的字符開頭或結束
System.out.println("判斷字符串以什麼開頭:"+strmsg.startsWith("are"));
System.out.println("判斷字符串以什麼結束:"+strmsg.endsWith("ok"));
// toUpperCase()和toLowerCase()將字符串轉換爲大寫或小寫
System.out.println("字符串轉大寫:"+strmsg.toUpperCase());
System.out.println("字符串轉小寫:"+"ARE YOU OK".toLowerCase());
// concat() 連接兩個字符串
System.out.println("連接字符串:"+strmsg.concat("AREYOUOK"));
System.out.println("拼接字符串:"+"AREYOUOK".concat(strmsg));
// trim()去掉起始和結束的空格
System.out.println("去掉開始結束空格:"+strmsg.trim());
System.out.println("去掉開始結束空格:"+" ARE YOU OK ".trim());
// substring()截取字符串
System.out.println("截取字符串結果:"+strmsg.substring(5));
System.out.println("截取字符串結果:"+"AREYOUOK".substring(5 ,8));
// indexOf()和lastIndexOf()前者是查找字符或字符串第一次出現的地方,後者是查找字符或字符串最後一次出現的地方
System.out.println("查找第一次出現位置:"+strmsg.indexOf("are"));
System.out.println("查找第一次出現位置:"+strmsg.indexOf("are11"));
System.out.println("查找第一次出現位置:"+strmsg.lastIndexOf("k"));
// compareTo()和compareToIgnoreCase()按字典順序比較兩個字符串的大小,前者區分大小寫,後者不區分
System.out.println("aaaaa".compareTo("aaaaa"));
System.out.println("aaaaa".compareTo("bbbbb"));
System.out.println("aaaaa".compareToIgnoreCase("AAAAA"));
// replace() 替換
System.out.println("替換結果打印:"+strmsg.replace("o", "O"));
}
}
測試輸出結果:
字符串長度:11
字符:e
截取字符串到字符數組:are yo
are you ok!
字符數組:are you ok!
比較兩個字符串是否相等:true
比較兩個字符串是否相等(不區分大小寫):true
判斷字符串以什麼開頭:true
判斷字符串以什麼結束:false
字符串轉大寫:ARE YOU OK!
字符串轉小寫:are you ok
連接字符串:are you ok!AREYOUOK
拼接字符串:AREYOUOKare you ok!
去掉開始結束空格:are you ok!
去掉開始結束空格:ARE YOU OK
截取字符串結果:ou ok!
截取字符串結果:UOK
查找第一次出現位置:0
查找第一次出現位置:-1
查找第一次出現位置:9
0
-1
0
替換結果打印:are yOu Ok!
總結:
equals的效率高些,compareTo其實就是按照編碼的數值求差值,根據差值進行比較,它能確定兩個String在字典順序上的前後性,當你只是想知道是否一致時,用equals也行,效果一樣。
另外,equals是Object的方法,要求涉及到比較操作的繼承類要自己重寫該方法,所以String重寫了equals,而compareTo爲String的方法。所以:
value1.compareTo(value2),當value1不爲String類型時,會報錯。
但是Object類 只有.equals(),沒compareTo
Object是根類,它有的方法,其他類都可以繼承,使用.所以.equals 基本隨時能用.
一、對於字符串變量來說,使用“==”和“equals()”方法比較字符串時,其比較方法不同。
1、“==”比較兩個變量本身的值,即兩個對象在內存中的首地址。
(java中,對象的首地址是它在內存中存放的起始地址,它後面的地址是用來存放它所包含的各個屬性的地址,所以內存中會用多個內存塊來存放對象的各個參數,而通過這個首地址就可以找到該對象,進而可以找到該對象的各個屬性)
2、“equals()”比較字符串中所包含的內容是否相同。
String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");
System.out.println("s1==s2:"+(s1==s2));
System.out.println("s1==s3:"+(s1==s3));
System.out.println("s1==s4:"+(s3==s4));
System.out.println("s1.equals(s2):"+(s1.equals(s2)));
System.out.println("s1.equals(s3):"+(s1.equals(s3)));
System.out.println("s3.equals(s4):"+(s3.equals(s4)));
s1==s2:false
s1==s3:false
s1==s4:true
s1.equals(s2):true
s1.equals(s3):true
s3.equals(s4):true
開發中儘量用equals。