首页 > 学院 > 开发设计 > 正文

java中的String池

2019-11-17 04:03:48
字体:
来源:转载
供稿:网友
在进入我们今天的话题前,先来看看下面这段代码,你知道它的结果吗?

程序代码
public class StringTest1{
  public static void main(String[] args) {
     String str1 = "abc";
     String str2 = "abc";
     System.out.PRintln(str1 == str2);
   }
}

   正确答案应该是true。再来看下面这段代码:
程序代码

public class StringTest2 {
   public static void main(String[] args) {
     String str1 = new String("abc");
     String str2 = new String("abc");
     System.out.println(str1 == str2);
  }
}



   正确答案是false。

   众所周知,java的String是不可改变的字符串对象。为了提高效率,java为String类提供了串池。正如大家所看到的那样,在StringTest1中就使用了串池。当你重新声明一个String型变量为abc时,将使用串池里原来的那个abc,而不重新分配内存,也就是说,str2与str1将会指向同一块内存。所以结果为true。在StringTest2中使用了普通对象的声明方式,系统将会为str1和str2各分配一块内存。所以结果为false。 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表