3.String类有什么特点:
一旦赋值,便不能更改其指向的字符对象。如果更改,则会指向一个新的字符对象。
4.String什么时候进行值比较,什么时候进行引用比较?
(1)引用比较
public class StringEqualTest {
public static void main(String[] args){
String s = new String("Hello");
String t = new String("Hello");
if (s==t){//对象引用,生成两个堆,即引用比较
System.out.println("相等");
}
else{
System.out.println("不相等");
}
}
}
(2)值比较
public class StringEqualTest1{
public static void main(String[] args){
String s = new String("Hello");
String t = new String("Hello");
if (s.equals(t)){//值比较,严格区分字母大小写
System.out.println("相等");
}
else{
System.out.println("不相等");
}
}
}//若要忽略大小写,调用方法equalsIgnoreCase
5.String与StringBuffer的区别是什么?如何相互转化?
如第三题所说,String一旦赋值,便不能更改其指向的字符对象。而StringBuffer是一个具有对象引用传递特点的字符串对象。
(1)利用StringBuffer的构造方法将String对象转化成StringBuffer对象:
String s = new String() ;
StringBuffer sb = new StringBuffer(s);
(2)将StringBuffer对象转化为String对象:
利用构造方法:
StringBuffer sb = new StringBuffer();
String s = new String(sb);
调用toString方法 :
String str = sb.toString();
常用的API:subString()
①
public class StringEqualTest1{
public static void main(String[] args){
String s = new String("unHello");
System.out.println(s.substring(2));
}
}//输出:Hello
②
public class StringEqualTest1{
public static void main(String[] args){
String s = new String("unHello");
System.out.println(s.substring(7));
}//输出为空值(an empty string)即“”
③
public class StringEqualTest1{
public static void main(String[] args){
String s = new String("unHellowp");
System.out.println(s.substring(2,7));
}
}//输出:Hello