回答編集履歴

2

compare

2020/07/15 06:53

投稿

momon-ga
momon-ga

スコア4820

test CHANGED
@@ -82,4 +82,12 @@
82
82
 
83
83
  System.out.println("(int)th == (int)th2 : " + b); // true
84
84
 
85
+
86
+
87
+ b = Integer.compare(th, th2) == 0;
88
+
89
+ System.out.println("Integer.compare(th, th2) == 0 : " + b); // true
90
+
91
+
92
+
85
93
  ```

1

追記

2020/07/15 06:53

投稿

momon-ga
momon-ga

スコア4820

test CHANGED
@@ -45,3 +45,41 @@
45
45
  Integerなので、scale無いのですが比較を必ずequalsでやるものと覚えてしまうと
46
46
 
47
47
  意図しない結果になることがあるかもしれません。
48
+
49
+
50
+
51
+ `==`の比較が使える場面では、私は積極的に使った方がよいと考えます。
52
+
53
+ とはいえ、==比較でバグを埋め込みやすいのは事実なので、使える場面を見極める必要があります。
54
+
55
+ ```java
56
+
57
+ Integer in = 2;
58
+
59
+ Integer in2 = 1 + 1;
60
+
61
+
62
+
63
+ // 一部のIntegerは同じインスタンスが利用される
64
+
65
+ boolean b = in == in2;
66
+
67
+ System.out.println("in == in2 : " + b); // true
68
+
69
+
70
+
71
+ Integer th = 1000;
72
+
73
+ Integer th2 = 999 + 1;
74
+
75
+
76
+
77
+ b = th == th2;
78
+
79
+ System.out.println("th == th2 : " + b); // false
80
+
81
+ b = ((int)th == (int)th2);
82
+
83
+ System.out.println("(int)th == (int)th2 : " + b); // true
84
+
85
+ ```