String是最基本的數據類型嗎?
基本數據類型包括byte、int、char、long、float、double、boolean和short。
java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。爲了提高效率節省空間,我們應該用StringBuffer類
string常量池:
對於重複出現的字符串直接量,jvm會首先在常量池中查找如果存在即返回該對象。
package string;
public class TestConstantPoll {
public static void main(String[] args){
String str1 = "hello";
//不會創建新對象,而是使用常量池中已有的
String str2 = "hello";
System.out.println(str1 == str2);
//使用new關鍵字會創建新的對象
String str3 = new String("hello");
System.out.println(str1 == str3);
}
}
String在內存中採用Unicode編碼,每個字符佔用兩個字節;任何一個字符(無論中文還是英文)都算1個字符長度,佔用兩個字節。
package string;
public class TestLength {
public static void main(String[] args){
String str1 = "hello";
System.out.println(str1.length());
String str2 = "你好,String";
System.out.println(str2.length());
}
}
charAt:
package string;
public class TestCharAt {
public static void main(String[] args){
String name = "whatisjava";
for(int i = 0; i < name.length(); i++){
System.out.print(name.charAt(i) + " ");//w h a t i s j a v a
}
}
}
indexOf:
package string;
public class TestIndexOf {
public static void main(String[] args){
String str = "i can because i think i can";
int index = str.indexOf("can");
System.out.println(index); //2
index = str.lastIndexOf("can");
System.out.println(index); //24
index = str.indexOf("can",6);
System.out.println(index); //24
index = str.indexOf("Can");
System.out.println(index); //-1
}
}
startWith endWith
public class TestStartWithEndWith {
public static void main(String[] args) {
String str = "thinking in java";
System.out.println(str.startsWith("java")); //false
System.out.println(str.startsWith("t")); //true
System.out.println(str.startsWith("think")); //true
System.out.println(str.startsWith("Think")); //false
}
}
subString
package string;
public class TestSubString {
public static void main(String[] args){
String str = "http://www.oracle.com";
String subStr = str.substring(11,17);
System.out.println(subStr); //oracle
subStr = str.substring(7);
System.out.println(subStr); //www.oracle.com
}
}
toUpperCase toLowerCase
package string;
public class TestToUpperCaseToLowerCase {
public static void main(String[] args){
String str = "我喜歡java";
str = str.toUpperCase();
System.out.println(str); // 我喜歡JAVA
str = str.toLowerCase();
System.out.println(str); //我喜歡java
}
}
Trim:
package string;
public class TestTrim {
public static void main(String[] args){
String str = " good time ";
str = str.trim();
System.out.println(str); //good time
}
}
valueOf:
package string;
public class TestValueOf {
public static void main(String[] args){
double pi = 3.1415;
String str = String.valueOf(pi);
System.out.println(str);
}
}
StringBuilder封裝可變字符串。
stringbuilder是可變字符串。字符串的內容計算,建議採用StringBuilder實現。
StringBuffer和StringBuilder:
StringBuffer是線程安全的,同步處理的,性能稍慢。
StringBuilder是非線程安全的,併發處理的,性能稍快。