1. String概述
字符串是常量,创建之后不可改变 字符串字面值存储在字符串池中,可以共享 String string = “ABC”; 产生一个对象,字符串池中存储 String string = new String(“ABC”); 产生两个对象,堆、池各存储一个
public class Test {
public static void main ( String [ ] args) {
String string1 = "ABC" ;
string1 = "qwe" ;
String string2 = new String ( "ABC" ) ;
}
}
2. String常用方法
public int length():返回字符串的长度 public char charAt(int index):根据下标获取字符 public boolean contains(String string):判断当前字符串中是否包含string
public class Test {
public static void main ( String [ ] args) {
String string1 = "ABCD" ;
System . out. println ( string1. length ( ) ) ;
System . out. println ( string1. charAt ( 2 ) ) ;
System . out. println ( string1. contains ( "BC" ) ) ;
}
}
public char[] toCharArray():将字符串转换成数组 public int indexOf(String string):查找string首次出现的下标,存在则返回该下标,不存在则返回-1 public int lastIndexOf(String string):查找字符串在当前字符串中最后一次出现的下标索引
public class Test {
public static void main ( String [ ] args) {
String string1 = "ABCBCD" ;
System . out. println ( string1. toCharArray ( ) ) ;
System . out. println ( string1. indexOf ( "BC" ) ) ;
System . out. println ( string1. indexOf ( "BC" , 2 ) ) ;
System . out. println ( string1. lastIndexOf ( "BC" ) ) ;
}
}
public String trim():去掉字符串前后的空格 public String toUpperCase():将小写转成大写 public boolean endWith(String string):判断字符串是否以string结尾
public class Test {
public static void main ( String [ ] args) {
String string1 = " AbCD" ;
System . out. println ( string1. trim ( ) ) ;
System . out. println ( string1. toUpperCase ( ) ) ;
System . out. println ( string1. endWith ( "CD" ) ) ;
}
}
public String replace(char OldChar, char NewChar):将旧字符/字符串替换成新字符/字符串 public String[] split(String string):根据string做拆分 public boolean equals(String string):比较给出的字符串与原字符串是否相同 public int compareTo(String string):计算给出的字符串与原字符串按照顺序第一个不同字符之间的差值,如果完全一致但有多出的字符,便计算字符串长度的差值
public class Test {
public static void main ( String [ ] args) {
String string1 = "ABCDE" ;
String string2 = "ABC" ;
for ( Object i : string1. split ( "A" ) ) {
System . out. println ( i) ;
}
System . out. println ( "*********" ) ;
for ( Object i : string1. split ( "[AB]" ) ) {
System . out. println ( i) ;
}
System . out. println ( "*********" ) ;
for ( Object i : string1. split ( "[AB]+" ) ) {
System . out. println ( i) ;
}
System . out. println ( string1. equals ( string2) ) ;
System . out. println ( string1. equalsIgnoreCase ( string2) ) ;
System . out. println ( string1. compareTo ( string2) ) ;
}
}
3. StringBuffer和StringBuilder
StringBuffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全
append():追加 insert():添加 replace():替换 delete():删除
public class Test {
public static void main ( String [ ] args) {
StringBuffer stringBuffer = new StringBuffer ( ) ;
stringBuffer. append ( "ABC" ) ;
stringBuffer. append ( "abc" ) ;
stringBuffer. insert ( 0 , "123" ) ;
stringBuffer. replace ( 0 , 3 , "246" ) ;
stringBuffer. delete ( 0 , 3 ) ;
System . out. println ( stringBuffer) ;
}
}
StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全
append():追加 insert():添加 replace():替换 delete():删除
public class Test {
public static void main ( String [ ] args) {
StringBuilder stringBuilder = new StringBuilder ( ) ;
stringBuilder. append ( "ABC" ) ;
stringBuilder. append ( "abc" ) ;
stringBuilder. insert ( 0 , "123" ) ;
stringBuilder. replace ( 0 , 3 , "246" ) ;
stringBuilder. delete ( 0 , 3 ) ;
System . out. println ( stringBuilder) ;
}
}
public class Test {
public static void main ( String [ ] args) {
long start1 = System . currentTimeMillis ( ) ;
String string1 = "" ;
for ( int i = 0 ; i < 5000 ; i++ ) {
string1 += i;
}
System . out. println ( string1) ;
long end1 = System . currentTimeMillis ( ) ;
System . out. println ( end1 - start1) ;
long start2 = System . currentTimeMillis ( ) ;
StringBuffer string2 = new StringBuffer ( ) ;
for ( int i = 0 ; i < 5000 ; i++ ) {
string2. append ( i) ;
}
System . out. println ( string2) ;
long end2 = System . currentTimeMillis ( ) ;
System . out. println ( end2 - start2) ;
long start3 = System . currentTimeMillis ( ) ;
StringBuilder string3 = new StringBuilder ( ) ;
for ( int i = 0 ; i < 5000 ; i++ ) {
string3. append ( i) ;
}
System . out. println ( string3) ;
long end3 = System . currentTimeMillis ( ) ;
System . out. println ( end3 - start3) ;
}
}