黑马程序员技术交流社区

标题: 一个字符串常量是String类的匿名对象,解释一下这句话? [打印本页]

作者: 心?=忐§忑]    时间: 2014-4-6 15:49
标题: 一个字符串常量是String类的匿名对象,解释一下这句话?

public class Demo5 {
     public static void main(String args[]){
             String str = "hello" ;
             System.out.println("hello".equals(str)) ;
     }
}
/*返回的结果是true,说明“hello”是一个String类的匿名对象,
* 那么,是怎么实例化的呢,为什么这么说呢?*/
作者: ilvsoft    时间: 2014-4-6 15:52
你不是已经实例化他了吗,String str=“hello”;
作者: xuehuayous    时间: 2014-4-6 16:05
本帖最后由 xuehuayous 于 2014-4-6 16:06 编辑
  1. public class Test{
  2.         public static void main(String[] args) {
  3.                 String str = "hello" ;
  4.                 System.out.println("hello".equals(str)) ;
  5.                 System.out.println("hello" == str);
  6.                 //String池:Java为了优化字符串操作 提供了一个缓冲池;
  7.                 //str指向字符串“hello”,第二句中字符串“hello”,因为字符串在常量池中已经存在,第二句中字符串“hello”就不再开辟空间。
  8.                 //所以不管是equals比较内容, ==比较内存地址都为true
  9.         }
  10. }
复制代码

String池:Java为了优化字符串操作 提供了一个缓冲池;
str指向字符串“hello”,第二句中字符串“hello”,因为字符串在常量池中已经存在,第二句中字符串“hello”就不再开辟空间。
所以不管是equals比较内容, ==比较内存地址都为true
希望对你有帮助!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2