站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题java中的String池

java中的String池

摘要: java中的String池

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="270" height="86" align="center" valign="top"> </td> <td width="414" valign="top">

在进入我们今天的话题前,先来看看下面这段代码,你知道它的结果吗?

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

   正确答案应该是true。再来看下面这段代码:
 
</td> </tr> </table>

程序代码

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。 </td> </tr> <tr>


↑返回目录
前一篇: 直接插入排序
后一篇: 动态规划