奇怪的输出???

金融砖家 2009-06-29 10:52:11

String str1=new String("1111");
String str2=new String("1111");
System.err.println(str1==str2);
System.out.println(str1.equals(str2));

在MAIN函数里面 正常结果是 先false 然后true 大部分情况是这样的 可是有时候在 控制台中 先打印出 true 在打印出false 结果没有错 但怎么有时候会出现这种情况啊 难道我的ECLIPSE有问题??
...全文
51 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZhaoHuiZiXin 2009-06-30
  • 打赏
  • 举报
回复
一楼,顶你。
cdlmagical 2009-06-30
  • 打赏
  • 举报
回复
支持!
longq121 2009-06-30
  • 打赏
  • 举报
回复
一楼,顶你。
macower 2009-06-30
  • 打赏
  • 举报
回复

== 比较的是两个对象引用的地址(这个对非数值型的而言是地址,数值型的比较的是值)

equals 比较的是值

两个string 是两个不同的对象 存放在heap中
地址不同 所以 false

后面的是比较的值 所以 true

金融砖家 2009-06-30
  • 打赏
  • 举报
回复
我本来在网上有类似的解释 但当时没看懂 谢谢一楼
keyboardsun 2009-06-30
  • 打赏
  • 举报
回复
字符串不能用==,==是用于比较hashcode了
「已注销」 2009-06-30
  • 打赏
  • 举报
回复
顶一楼

superjava000 2009-06-29
  • 打赏
  • 举报
回复
是挺奇怪
我没有遇到过这样的问题
HappyWind838 2009-06-29
  • 打赏
  • 举报
回复
两个输出都用System.err 与 System.out 中的一个的话应该是先false后true
但分别用System.err与System.out 顺序就是不确定的
System.err是标准错误流System.out是标准输出流,一般把它们都定向到控制台上,
但可能是并发执行的.

62,620

社区成员

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

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