string 如何实现的 有哪些重要的方法
(源码)多构造方法
String 为参数的构造方法
public String (String original){
this.value = original.value;
this.hash = original.value;
}
char[] 为参数的构造方法
public String (char value[]){
this.vlaue =Arrays.copyOf(value,value.lenght);
}
stringBuffer为参数的构造方法
public String (StringBuffer buffer){
synchronized(buffer){
this.vlaue =Arrays.copyOf(buffer.value,buffer.lenght());
}
}
StringBuilder为参数的构造方法
public String (StringBuilder builder){
this.vlaue =Arrays.copyOf(builder.value,builder.lenght());
}
equals比较字符串的源码
public boolean equals (Object anObject){
if(this == anObject){return true;} //对象引用相同返回true
if(anObject instanceof String){
String antherString=(String ) anObject;
int n =value.lenght;
if(n == antherString.value.lenght){
//把两个字符串转换为char数组对比
char v1[] =value;
char v2[] = antherString.value;
int i = 0;
//循环对比两个字符串的每一个字符
while(n-- !=0){
if(v1[i] = v2[i])return false;
i++;
}
return true;
}
}
return false;
}
instanceof使用例子
Object oString = "123";
Object oInt = 123;
System.out.pringtln(oString instanceof String); //返回true
System.out.pringtln(oInt instanceof String); //返回false
compareTo(); 比较两个字符串 (0 相等 正数是大于 负数是小于)
compareTo与equals区别
equals可以接受一个Object类型的参数 而compareTo只能接收String类型的参数
equals 返回值为Boolean 而compareTo返回Int
String 的其它方法
其它问题:
拼接后 s1 == s2 //true