equals()"
这一定就是对象间的比较,
"123"=="123"
这结果为false
因为他们,不是一个对象
"123".equals("123")
这结果为true
因为他们等值
这个方法,就是因为JAVA,没有重载==引起的,
判断对象等值,你只好用它网上还有说这个例子的,
String mm ="123"
(mm==mm)
结果为true
但是,这有什么意义呢,
难道还是JAVA的特色不成??
这一定就是对象间的比较,
"123"=="123"
这结果为false
因为他们,不是一个对象
"123".equals("123")
这结果为true
因为他们等值
这个方法,就是因为JAVA,没有重载==引起的,
判断对象等值,你只好用它网上还有说这个例子的,
String mm ="123"
(mm==mm)
结果为true
但是,这有什么意义呢,
难道还是JAVA的特色不成??
解决方案 »
- 求教~Webservice能否返回Document类型呀~急~
- strust 上传问题
- SSH框架整合问题
- JTable 选中的行不可编辑
- 如何用代码实现每月自动备份Oracle数据库
- weblogic 部署,发布路径老不对~
- 用struts开发一个增删改查的系统从何入手
- 为什么我的class文件打包成jar后放到war的lib下面jsp页面会访问不到,而不打包直接放到classes下或war根目录下就可以了?
- 各位谁知JSP,Servlet等东东要放在Tomcat之类的容器下吗?
- JbuilderX和Axis写webservices出错
- 如何在Tomcat中添加虚拟子目录
- 高分求JSP论坛原码一份,要求JSP+weblogic+oracle,急!!
对于Object,除非两个指向同一个引用,否则== 和 equal的结果都是false
以上讲的都不全面
if( mm =="123")//SUN应先把这里的"123"解释为一个String对象,这样的操作就可实现了。
{
}
一般来说“=”是对像之间的比较;
面“equals()”刚是对内容的比较。
一般来说“=”是对像之间的比较;
而“equals()”刚是对内容的比较。
(更正,对不起打错字!)
==和equals的含义本来就是不同你以后就体会到好处了
不要拿那个提供无穷无尽#define的cpp来比
public boolean equals(Object obj) {
return (this == obj);
}
在默认的情况下,它与==是一致的
但是String,Integer等等这些类覆盖了equals方法,才使得这些类的equals方法比较的是内容
==对象
equals串
equals 比较的是 内容。。但对于 String 类型时 如果 植相等时 好象就表示一个对象了,看下面的例:public class Hello { public static void main(String[] args) {
String A="123";
String B="123";
if(A.equals(B))
{
System.out.println("A equal B");
}
if(A==B)
{
System.out.println("A=B");
}
}
}结果是: A equal B
A=B但如果 不是 String 时 是这样的:public class Hello { public static void main(String[] args) {
Integer A=new Integer(123);
Integer B=new Integer(123); if(A.equals(B))
{
System.out.println("A equal B");
}
if(A==B)
{
System.out.println("A=B");
}
}
}
结果:A equal B
但很奇怪的是:public class Hello { public static void main(String[] args) {
//System.out.println("Hello");
String A=new String("123");
String B=new String("123");
//Integer A=new Integer(123);
//Integer B=new Integer(123);
if(A.equals(B))
{
System.out.println("A equal B");
}
if(A==B)
{
System.out.println("A=B");
}
}
}结果是:A equal B
我的想法是: equal比较的是对象的 类容,而 == 比较的是 地址,小弟说错了的话大家不要骂我啊!!
就是地址与内容的区别
用栈式、堆式的存储来理解是最好的了
栈中存放标识符的类型、地址值(如果是PRIMITIVE TYPE则存放实际值)
堆中存放对象的实例
函数都是传值调用的
而equals方法比较的则是对象的内容,如果内容一样,那么结果就为true,而不必管它是否是在同一块存储区域内。
equals比较的到底是什么要看这个类的equals方法到底是怎么样实现的!
对于Object这个对象里,equals()就是判断两个object是否==,而对于String ,equals()判断就是两个String对象中的值?谁说“但对于 String 类型时 如果 植相等时 好象就表示一个对象了”?
你试试这样的代码:
String s1 = "abc";
String s2= new String("abc");
if(s1==s2)
{
System.out.println("s1==s2");
}
else
{
System.out.println("s1!=s2");
}
看看结果是什么?这时s1==s2为false, s1.equals(s2)为true!请各位大哥搞清楚概念再来回答别人!