首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

有关于JAVA string类的有关问题

2012-04-08 
有关于JAVA string类的问题最近在学JAVA,在学习string类的时候遇到了一些问题:如String anew String(“abc

有关于JAVA string类的问题
最近在学JAVA,在学习string类的时候遇到了一些问题:
  如String a=new String(“abc”);
  这个语句创建了两个对象,一个放在堆中,一个在字符串池中。然后引发了疑问
  1.如String a=new String(“abc”);
  String b=new String(“abc”);
  这两个语句是否只是创建了3个对象?我的解释是因为第二句中的“abc”,由于第一句的缘故在字符串池中已经创建。
  2.如
  String a=new String(“abc”);
  String b=new String(“abc”);
  String c=“abc”;
  此时依然只创建了3个对象。
  即我的理解是,当“abc”在字符池中时,可以被共享,无论是在栈中的引用,还是堆中的对象。
  请大虾指点

[解决办法]
执行:
String a=new String(“abc”);
String b=new String(“abc”);
是创建了3个对象,
执行:
String a=new String(“abc”);的时候,字符池中先去找a,b,c三个字符,构建一个字符串abc
将其指给a这个引用变量,此时已经出现两对象.
再执行 String b=new String(“abc”);就是创建第三个对象。
  


[解决办法]
String a=new String(“abc”);
abc 是字符串的常量
出现“abc”
就在内存中创建了这个字符串
把它用new关键字给了a时
等于是创建一个新的对象a
所以是两个对象
String b=new String(“abc”);就是创建第三个对象。

热点排行