一、equals
1. equals没有override的时候,equals比较的是对象是否相同,即对象的引用比较
2、equals 被override的时候,比较的是对象的内容,如String,Date,File
二、==
1.基本数据类型,比较其值是否相同
2、类对象,比较两个对象的reference
三、与string相关
String s=new String("aa") 与 s="aa" 是有区别的,详细的解说可见臧圩人的博客http://zangweiren.javaeye.com/blog/209895
四、代码测试
- //自己创建的类,没有override equals
- class Value{
- int i;
- }
- public class TestEquals {
- //final static
- public final static String A="ab";
- public final static String B="cd";
- //不加fianl
- public static String M="hi";
- public static String N="jk";
- public static void main(String[] args) {
- // 1
- String s = A + B;
- String t = "abcd";
- System.out.println("final static string");
- if (s == t) {
- System.out.println("s=t");
- } else {
- System.out.println("s!=t");
- }
- // 2
- String u=M+N;
- String v="hijk";
- System.out.println("static string");
- if (u == v) {
- System.out.println("u=v");
- } else {
- System.out.println("u!=v"); //注意1,2的不同
- }
- // 3
- String s1,s2;
- s1="Are we same?";
- s2="Are we same?";
- System.out.println("character string:");
- System.out.println(s1==s2);
- System.out.println(s1.equals(s2));
- //4
- s1=new String("Are we same?");
- s2=new String("Are we same?");
- System.out.println("new string method:");//注意3,4的不同
- System.out.println(s1==s2);
- System.out.println(s1.equals(s2));
- Value v1=new Value();
- Value v2=new Value();
- v1.i=v2.i=3;
- System.out.println("user create class:");//注意与4的不同
- System.out.println(v1==v2);
- System.out.println(v1.equals(v2));
- }
- }
- 执行结果:
- final static string
s=t
static string
u!=v
character string:
true
true
new string method:
false
true
user create class:
false
false