java必须知道的3个String的问题

来源:互联网 发布:淘宝仓管是做什么的 编辑:程序博客网 时间:2024/06/06 12:36

 java必须知道的3String的问题  

今天看了一个帖子感觉挺不错的,想总结一下。

String声明问题

String str = "Hello Java!".这句话是指我们声明了一个可以指向任何String类型数据的引用变量strstr此时指向的是内存中的一个匿名对象"Hello Java!",而不是声明了一个对象。这就是为什么我们再声明一个引用变量:String str1 = "Hello Java"时。str == str1的结果是true .如果是String str2 = new Sting(“Hello Java!”);的话,str == str2的结果是false。因为引用类型比较的是地址,而str str1 保存的都是同一个地址。

“==”和”equal”的区别

   ==比较的是两者的值是否相等,引用变量的值是一个地址。所以引用变量比较的是两个地址,如果想要比较两个引用类型的内容是否相等必须使用equalObject object)方法。

因为在Object类中equal()方法是这样写的:

boolean equals(Object o){ 

return this==o; 

所以,如果你自己写的类不重写equal()方法的话,equal()方法的作用等同于“==”。

String的不可变问题

String类型是不可变的,如:

String str =a”;

String str1 =str+b”;

这时在内存中字符串“a”并没有改变,而是在内存申请了一个新的字符串内容是“ab”。

所以会大量占用内存,所以出现了StringBuffer类可以实现可以增长的字符串功能,节省内存。