当前位置: 技术问答>java相关
什么情况下两个对象可以用“==”或者“!=”来比较啊?
来源: 互联网 发布时间:2015-09-08
本文导语: 为什么我自己写的这个类的实例不能用“==”和“!=”来比较呢? import java.io.*; public class MyApp { public static void main(String[] args){ M m = new M("n"); N n = new N("n"); System.out.println(n==m); } } class M { pub...
为什么我自己写的这个类的实例不能用“==”和“!=”来比较呢?
import java.io.*;
public class MyApp
{
public static void main(String[] args){
M m = new M("n");
N n = new N("n");
System.out.println(n==m);
}
}
class M {
public String str;
public M(String s){
str=s;
}
}
class N {
public String str;
public N(String s){
str = s;
}
}
编译出错:
incomparable types: N and M
import java.io.*;
public class MyApp
{
public static void main(String[] args){
M m = new M("n");
N n = new N("n");
System.out.println(n==m);
}
}
class M {
public String str;
public M(String s){
str=s;
}
}
class N {
public String str;
public N(String s){
str = s;
}
}
编译出错:
incomparable types: N and M
|
你定义的两个类虽然形式一样,但他们没有直接的关系,所以不能这样比较。
1 .简单变量,如int,char等,
2 .引用性变量在比较是否是引用同一内存空间。
1 .简单变量,如int,char等,
2 .引用性变量在比较是否是引用同一内存空间。
|
因为是同一个类对象的不同实例的比较,
应为==是运算符操作,在类里已经封装了它的方法,
就是比较同类实例对象是否相等。
应为==是运算符操作,在类里已经封装了它的方法,
就是比较同类实例对象是否相等。
|
用"=="或"!="是判斷對象的引用是否相等,即這兩個對象是否為同一個對象.
而用"equals"是判斷對象的內容是否相等.
String s1 = new String("1234");
String s2 = new String("1234");
s1==s2,為false;
用"equals",則 s1.equals(s2)為true;
這裡說的都是類,而不是基本類型.
而用"equals"是判斷對象的內容是否相等.
String s1 = new String("1234");
String s2 = new String("1234");
s1==s2,為false;
用"equals",則 s1.equals(s2)為true;
這裡說的都是類,而不是基本類型.
|
当你想知道两个对象名在内存中是否是同一对象对,可以用==和!=来比较
这两个符号在对象比较对是看地址是否相等
这两个符号在对象比较对是看地址是否相等
|
在这里用equals呀,==,!=是比较同一个对象的