当前位置: 技术问答>java相关
非常奇怪!看上相等就是不等!!!高分
来源: 互联网 发布时间:2014-12-22
本文导语: String mmethod="GET"; mmethod= (String)req.getMethod(); mmethod=mmethod.trim(); String mget="GET"; mget=mget.trim(); if ( mget==mmethod) { out.println(mmethod +"aaa:" mget); ...
String mmethod="GET";
mmethod= (String)req.getMethod();
mmethod=mmethod.trim();
String mget="GET";
mget=mget.trim();
if ( mget==mmethod)
{
out.println(mmethod +"aaa:" mget);
}
else
{
out.println(mmethod +":bbb:" mget);
}
得到的結果是:GET:bbb:GET
mmethod= (String)req.getMethod();
mmethod=mmethod.trim();
String mget="GET";
mget=mget.trim();
if ( mget==mmethod)
{
out.println(mmethod +"aaa:" mget);
}
else
{
out.println(mmethod +":bbb:" mget);
}
得到的結果是:GET:bbb:GET
|
哈哈!
mget==mmethod ?
你是刚学Java吗?
应该为
mget.equals(mmethod)
mget==mmethod ?
你是刚学Java吗?
应该为
mget.equals(mmethod)
|
或者
if (mget.compareTo(mmethod)==0)
if (mget.compareTo(mmethod)==0)
|
当然不等啊! Java 将双引号(" ")引起来的字符序列当作是一个字符串,而 Java 中的 一个字符串是一个对象的。mget 和 mmethod 就是两个对象引用变量,他们的值是两个字符串的引用(有些类似 c中的指针),所以虽然两个字符串内容相等,但是此两变量是不等的。