首页 热点专区 小学知识 中学知识 出国留学 考研考公
您的当前位置:首页正文

Java String中的一些问题

来源:要发发知识网

public class TestString {

 、public static void main(String[] args) {

String str1 = "abc";

str1+="def";

String str2 = "abcdef";

String str3 = "abcdef";

String str4 = "abc"+"def";

String str5 = new String("abcdef");

System.out.println(str1==str2);  //false

System.out.println(str1.equals(str2)); //true

System.out.println(str3==str2); //true

System.out.println(str3.equals(str2)); //true

System.out.println(str4==str2); //true

System.out.println(str4.equals(str2)); //true

System.out.println(str5==str2);//false 一个堆内存,一个常量池

/*

* ==比较的是变量中存放的地址,equals比较的是值。 String类型的变量 是存          放在 string常量池中的常量;

* 所以在 进行==比较的时候 是true

*

*  String str1 = "abc"; str1+="def";

String str4 = "abc"+"def";

的不同:

"abc"+"abc"是先进行字符串连接 在string常量池中找寻到abcdef 将abcdef的地址赋值给 str4 因此它和str2

的指向的地址相同 所以 进行==比较时 为true

而, String str1 = "abc"; str1+="def"; 是通过StringBuffer来实现的,先构造一个StringBuffer

对象存放“abc” 然后调用append()方法追加 “def” ,然后再将StringBuffer对象转换成String对象

所以与str2的地址不同 故进行==比较时 为false

* */

}

}

显示全文