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

犀利哥的哥哥的哥来帮小弟我看下

2012-03-21 
犀利哥的哥哥的哥来帮我看下String anew String(abc)String bnew String(abc)String cabc创建

犀利哥的哥哥的哥来帮我看下
String a=new String("abc"); 
String b=new String("abc"); 
String c="abc";
创建了几个对象
c指向谁?

String a=new String("abc"); 
a="abc";
创建了几个对象


[解决办法]
假设你的 neme的内存地址为 100
this.name=neme。那么name的值就会指向内存中100那个地方。
this.name=new Striing (neme);系统会重新开辟一块内存,假设地址为200.那么此时你的name的值就会指向内存中200那个地方。
字符串的字面值是一样的 但是内存地址不一样。
String s1 ="a";
String s2 = s1;
String s3 =new String(s1);
此时 s1==s2 true; s1==s3 false;
但是如果使用 s1.equals(s2), s1.equals(s3). 都是 true.
[解决办法]
"a "已经对应一个字符串对象, 
String a = "a "; 
只是让变量a引用到这个对象。而 
String a = new String( "a "); 
以这个已有的对象 "a "为样本,构造出一个内容完全相同的另一个对象,然后让变量a引用到它
[解决办法]
3个对象。两个heap 一个常量池
[解决办法]
String a=new String("abc");
String b=new String("abc");
String c="abc";
创建了几个对象


创建了5个对象




String a=new String("abc");
a="abc";
创建了2个对象

热点排行