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是非线程安全的,并发处理的,性能稍快。