WEB开发网
开发学院WEB开发Jsp java中的String池 阅读

java中的String池

 2009-11-16 21:04:09 来源:WEB开发网   
核心提示:在进入我们今天的话题前,先来看看下面这段代码,java中的String池,你知道它的结果吗?程序代码public class StringTest1{public static void main(String[] args) { String str1 = "abc"; String str2 =
在进入我们今天的话题前,先来看看下面这段代码,你知道它的结果吗?

程序代码
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。 

Tags:java String

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接