对String的概述
String :代表字符串,java中其他字符串都是String的实例化过程。
public final class String extends Object 说明该字符串是继承于Object 而且是 final型 不可继承。
字符串的赋值方式
String str = “abc”;
char data[] = {‘a’,‘b’,‘c’};String str = new String(data);
注意:字符串是常量,它们的值创建后就不能被更改。
String的构造方法
public String() 空参构造// 几乎没什么用 因为string是不可变的。
public String(byte[] bytes) 将字节数组转化为字符串
public String(byte[] bytes,int index,int length) 把字节数组的一部分转化为字符串
public String(String original):把字符串常量转化为字符串
String 常见问题
1.判断定义为string类型的s1和s2是否相等
String s1 = “abc";
String s2 = “abc”;
System.out.println(s1 == s2);//true
System.out.println(s1.equals(s2));//true
2.判断定义为string类型的s1和s2是否相等
String s1 = new String(“abc”);
String s2 = “abc”;
System.out.println(s1 == s2 );//false
System.out.println(s1.equals(s2));//true
3.下面这句话中,在内存中创建了几个对象
String s1 = new String(“abc”);//两个
4.判断定义为String类型的s1和s2是否相等
String s1 = " a" + “b”+ “c”;
String s2 = “abc”;
System.out.println(s1 == s2);//true
System.out.println(s1.equals(s2));//true
5.判断定义为String类型的s1和s2是否相等
String s1 = “ab”;
String s2 = “abc”;
String s3 = s1+“c”;
System.out.println(s3 == s2 );//false
System.out.println(s3.equals(s2));//true
常见string的判断功能
boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
public boolean equals ( Object anObject) {
if ( this == anObject) {
return true ;
}
if ( anObject instanceof String ) {
String anotherString = ( String) anObject;
int n = value. length;
if ( n == anotherString. value. length) {
char v1[ ] = value;
char v2[ ] = anotherString. value;
int i = 0 ;
while ( n-- != 0 ) {
if ( v1[ i] != v2[ i] )
return false ;
i++ ;
}
return true ;
}
}
return false ;
}
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean contains(String str):判断大字符串中是否包含小字符串
s. contains ( s2) ;
public boolean contains ( CharSequence s) {
return indexOf ( s. toString ( ) ) > - 1 ;
}
boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
s. startsWith ( s0) ;
public boolean startsWith ( String prefix) {
return startsWith ( prefix, 0 ) ;
}
public boolean startsWith ( String prefix, int toffset) {
char ta[ ] = value;
int to = toffset;
char pa[ ] = prefix. value;
int po = 0 ;
int pc = prefix. value. length;
if ( ( toffset < 0 ) || ( toffset > value. length - pc) ) {
return false ;
}
while ( -- pc >= 0 ) {
if ( ta[ to++ ] != pa[ po++ ] ) {
return false ;
}
}
return true ;
}
boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
s. endsWith ( s1) ;
public boolean endsWith ( String suffix) {
return startsWith ( suffix, value. length - suffix. value. length) ;
}
boolean isEmpty():判断字符串是否为空。
public boolean isEmpty ( ) {
return value. length == 0 ;
}
String的获取功能
public int length ( ) {
return value. length;
}
char charAt(int index):获取指定索引位置的字符
public char charAt ( int index) {
if ( ( index < 0 ) || ( index >= value. length) ) {
throw new StringIndexOutOfBoundsException ( index) ;
}
return value[ index] ;
}
int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
String substring(int start):从指定位置开始截取字符串,默认到末尾。
s. substring ( 0 ) ;
public String substring ( int beginIndex) {
if ( beginIndex < 0 ) {
throw new StringIndexOutOfBoundsException ( beginIndex) ;
}
int subLen = value. length - beginIndex;
if ( subLen < 0 ) {
throw new StringIndexOutOfBoundsException ( subLen) ;
}
return ( beginIndex == 0 ) ? this : new String ( value, beginIndex, subLen) ;
}
public String ( char value[ ] , int offset, int count) {
if ( offset < 0 ) {
throw new StringIndexOutOfBoundsException ( offset) ;
}
if ( count <= 0 ) {
if ( count < 0 ) {
throw new StringIndexOutOfBoundsException ( count) ;
}
if ( offset <= value. length) {
this . value = "" . value;
return ;
}
}
if ( offset > value. length - count) {
throw new StringIndexOutOfBoundsException ( offset + count) ;
}
this . value = Arrays. copyOfRange ( value, offset, offset+ count) ;
}
Arrays介绍
String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。
常见的字符串转化
byte[] getBytes():把字符串转换为字节数组。
s. getBytes ( ) ;
char[] toCharArray():把字符串转换为字符数组。
public char [ ] toCharArray ( ) {
char result[ ] = new char [ value. length] ;
System. arraycopy ( value, 0 , result, 0 , value. length) ;
return result;
}
static String valueOf(char[] chs):把字符数组转成字符串。
static String valueOf(int i):把int类型的数据转成字符串。
注意:String类的valueOf方法可以把任意类型的数据转成字符串
String toLowerCase():把字符串转成小写。(了解)
String toUpperCase():把字符串转成大写。
String concat(String str):把字符串拼接。 Integer.parseInt(str);转化为整数 (当然还有其他数据)
String类的其他功能
String的替换功能
String replace(char old,char new)
public String replace ( char oldChar, char newChar) {
if ( oldChar != newChar) {
int len = value. length;
int i = - 1 ;
char [ ] val = value;
while ( ++ i < len) {
if ( val[ i] == oldChar) {
break ;
}
}
if ( i < len) {
char buf[ ] = new char [ len] ;
for ( int j = 0 ; j < i; j++ ) {
buf[ j] = val[ j] ;
}
while ( i < len) {
char c = val[ i] ;
buf[ i] = ( c == oldChar) ? newChar : c;
i++ ;
}
return new String ( buf, true ) ;
}
}
return this ;
}
* String replace(String old,String new)
public String trim ( ) {
int len = value. length;
int st = 0 ;
char [ ] val = value;
while ( ( st < len) && ( val[ st] <= ' ' ) ) {
st++ ;
}
while ( ( st < len) && ( val[ len - 1 ] <= ' ' ) ) {
len-- ;
}
return ( ( st > 0 ) || ( len < value. length) ) ? substring ( st, len) : this ;
}
String的按字典顺序比较两个字符串
int compareTo(String str)
public int compareTo ( String anotherString) {
int len1 = value. length;
int len2 = anotherString. value. length;
int lim = Math. min ( len1, len2) ;
char v1[ ] = value;
char v2[ ] = anotherString. value;
int k = 0 ;
while ( k < lim) {
char c1 = v1[ k] ;
char c2 = v2[ k] ;
if ( c1 != c2) {
return c1 - c2;
}
k++ ;
}
return len1 - len2;
}
int compareToIgnoreCase(String str)