各位大哥,过来帮忙看一下这个怪问题怎么解决

xu2481469 2009-08-03 05:50:03
b[y][2]是个二维字符串数组

if(d[y][2]!="doc")
{
out.print(d[y][2]);
}
else
{
out.println("#"+d[y][2]+"#");
out.println("<br>");
}
结果输出的是doc,怎么会这样?而且我确认doc前后也没空格
...全文
134 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wu_jia_08 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 xu2481469 的回复:]
b[y][2]是个二维字符串数组

if(d[y][2]!="doc")
{
out.print(d[y][2]);
}
else
{
out.println("#"+d[y][2]+"#");
out.println(" <br>");
}
结果输出的是doc,怎么会这样?而且我确认doc前后也没空格
[/Quote]

equal()方法判断对象的内容是否相等。
== 判断对象的地址是否相同。
qingyunzhuimeng 2009-08-04
  • 打赏
  • 举报
回复
用!"doc".equals(d[y][2])试一试

b[y][2]是个二维字符串数组
d[y][2]
你确定是用的同一个数组吗?怎么你给出的是两个数组,
Clarity-Black 2009-08-04
  • 打赏
  • 举报
回复
“==”是盘断内存引用地址的(它判断依据不变,也就是始终是判断内存地址的);你的b[y][2]和doc在内存中的地址肯定是不一样的所以你的判断if(d[y][2]!="doc")肯定是成立的

这里要用equals()方法,但是也不是说equals()方法就一定对,这里之所以可以,是因为String类重写了equals()方法(你可以去查阅JDK的API),你调用String中的equals()方法时他比较的是String的值而不是内存地址。如果是其他的类,也就是说你的b[y][2]不再是String类型的,那你在使用equals()方法之前最好先去看看API,看对应的类是否重写了equals()方法。如果没有重写那么就是继承了Object类中的equals()方法,那依然是比较的内存地址。
Yan_0629 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wu_jia_08 的回复:]
引用楼主 xu2481469 的回复:
equal()方法判断对象的内容是否相等。
== 判断对象的地址是否相同。
[/Quote]
支持!
qiubojuncode 2009-08-03
  • 打赏
  • 举报
回复
equals()只能比较对象引用,==不仅可以比较引用,不可以比较基本类型,==比较要求类型必须一致,但是基本类型能自动转换的除外
musecangying007 2009-08-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zl3450341 的回复:]
字符串不能用==来判断相等

1楼说的对
[/Quote]
up
==一般用来判断实例对象
zl3450341 2009-08-03
  • 打赏
  • 举报
回复
字符串不能用==来判断相等

1楼说的对
apm80 2009-08-03
  • 打赏
  • 举报
回复
用if(!d[y][2].equals("doc"))试试
zhuzhusany 2009-08-03
  • 打赏
  • 举报
回复
用equals不要用!=去判断对象是否相等
bigbug9002 2009-08-03
  • 打赏
  • 举报
回复
if(d[y][2].equals("doc"))

改成这样.
字符串不能用==来判断相等。

62,615

社区成员

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

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