[解決済み] Java Integer compareTo() - なぜ比較と引き算を使い分けるのか?
2023-05-04 06:01:15
質問
私は、以下のことを発見しました。
java.lang.Integer
の実装は
compareTo
メソッドの実装は以下のようになります。
public int compareTo(Integer anotherInteger) {
int thisVal = this.value;
int anotherVal = anotherInteger.value;
return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}
問題は、なぜ引き算ではなく、比較を使うのかということです。
return thisVal - anotherVal;
どのように解決するのですか?
整数のオーバーフローが原因です。いつ
thisVal
が非常に大きく、かつ
anotherVal
が負なら、前者から後者を引くと、結果は
thisVal
よりも大きくなり、負の範囲にオーバーフローする可能性があります。
関連
-
Javaでよくある構文エラー
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] いつ使うか。Java 8+のインターフェイスのデフォルトメソッドと、抽象的なメソッドの比較
-
[解決済み] なぜJava 8のOptionalは引数で使ってはいけないのか
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
スレッド "main "での例外 java.util.NoSuchElementException in Java 問題解決済み
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
型に解決できない エラー解決
-
Junitのユニットテストはjava.lang.Testを報告します。
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
Zipファイルの圧縮・解凍にantを使用する
-
[解決済み] Min-Max HeapのJava実装?