1
public class ObjectEqualsTest {
2
public static void main(String[] args) {
3
Number int1 = new Number(5);
4
Number int2 = new Number(5);
5
// int1.equals(int2)為false
6
System.out.println(int1.equals(int2));
7
// int1 == int2為false
8
System.out.println(int1 == int2);
9
}
10
}
11
12
class Number {
13
private final int inta;
14
public Number(int inta) {
15
this.inta = inta;
16
}
17
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

1
public class ObjectEqualsTest {
2
public static void main(String[] args) {
3
Integer int1 = new Integer(5);
4
Integer int2 = new Integer(5);
5
// int1.equals(int2)為true
6
System.out.println(int1.equals(int2));
7
// int1 == int2為false
8
System.out.println(int1 == int2);
9
}
10
}
為什么會出現int1.equals(int2) = true,是因為在Integer類中overrides了equals方法
2

3

4

5

6

7

8

9

10

1
public boolean equals(Object obj) {
2
if (obj instanceof Integer) {
3
return value == ((Integer)obj).intValue();
4
}
5
return false;
6
}
而在Number對象的equals方法的Object對象的equals方法
2

3

4

5

6

1
public boolean equals(Object obj) {
2
return (this == obj);
3
}

2

3
