String a="123"与String a=new String("123")出来的两个a,b之间有什么区别???

ezyw 2002-03-15 03:59:48
请问
String a="123"

String a=new String("123")
有什么区别???????
也就是说下列程序为什么结果是
true;
true;
false;
true;


String a="123";
String b="123";
System.out.println(a==b);
System.out.println(a.equals(b));

String a1=new String("123");
String b1=new String("123");
System.out.println(a1==b1);
System.out.println(a1.equals(b1));
...全文
498 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluebird97073 2002-03-15
  • 打赏
  • 举报
回复
to 楼上
a和b当然是地址~~
snowredfox 2002-03-15
  • 打赏
  • 举报
回复
String a="123";
String b="123";
System.out.println(a==b);
为true,我觉得此时a和b不应该是地址,而应是地址中所指向的内容

String a1=new String("123");
String b1=new String("123");
System.out.println(a1==b1);
为false,此时的a和b才是不同的地址,指向各自新创建的空间


bluebird97073 2002-03-15
  • 打赏
  • 举报
回复
String a="123"; String b="123;
a 和 b 都指向常量“123“的地址

String a=new String("123"); b=new String("123");
a 和 b 开辟了各自的内存空间~~

indianwolf 2002-03-15
  • 打赏
  • 举报
回复
和c一样,new 操作也是分配一块内存。虽然java说他没有指针,但是java中的
许多数据类型都使用名字作为指针的,比如 String,Vector,Hashtable等
a==b是指内存位置相等
a.equles(b)是指变量内容相等

我曾经写过一段代码:
String a;
Vector v=new Vector();
for(i=0;i<5;i++)
{
a=""+i;
v.addElement(a);
}
如果你把v中的东西取出来看的话,发现都是5
为什么?就是因为没有用a=new String(""+i);
v中所存的地址都是一个

不知我这么说你能明白吗

MrYoucheng 2002-03-15
  • 打赏
  • 举报
回复
"System.out.println(a1==b1);" is false is because a1 and b1 are not the some objects though they have same value

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧