Math.max()とは何か
Javaで業務システムを開発していると、複数の数値の中から「最も大きい値」を取得したい場面が頻繁に登場します。
例えば、
- 売上比較
- 最高点の取得
- 最大在庫数の確認
- アクセス数ランキング
- 最高気温の取得
- 最大許容量の判定
などです。
そのような場面で利用されるのが
Math.max()
です。
Math.max(値1, 値2)Javaこのメソッドは、2つの値を比較して大きい方の値を返します。
JavaのMathクラスに含まれる基本メソッドであり、実務でも非常に利用頻度が高いユーティリティです。
まずは「最大値」を理解しよう
最大値とは、比較対象の中で最も大きな値のことです。
例えば次の数字があるとします。
10
50
30
20
この中で最大値は50です。
Math.max()は、そのような「大きい方の値」を簡単に取得できます。
Math.max()の基本構文
最もシンプルな例を見てみましょう。
// 2つの値
int a = 10;
int b = 20;
// 大きい方を取得
int result =
Math.max(a, b);
// 結果表示
System.out.println(result);
Java実行結果
20
10と20を比較し、大きい方の20が返されています。
ステップバイステップで理解する
ステップ1:比較する値を準備する
// 売上
int sales1 = 150;
int sales2 = 200;
Java2つの値が存在しています。
ステップ2:Math.max()を実行する
// 最大値取得
int maxSales =
Math.max(
sales1,
sales2
);
Javaステップ3:結果を確認する
// 出力
System.out.println(maxSales);
Java実行結果
200
大きい方の値が取得できました。
同じ値の場合はどうなるのか
比較対象が同じ値でも問題ありません。
// 同じ値
int a = 100;
int b = 100;
// 最大値取得
int result =
Math.max(a, b);
System.out.println(result);
Java実行結果
100
同じ値なので、その値が返されます。
マイナス値でも利用できる
Math.max()は負の値にも対応しています。
// マイナス値
int a = -50;
int b = -10;
// 最大値取得
int result =
Math.max(a, b);
System.out.println(result);
Java実行結果
-10
マイナスの世界では、-10の方が大きい値になります。
対応しているデータ型
Math.max()は複数の数値型に対応しています。
int型
// int型
int result =
Math.max(10, 20);
Javalong型
// long型
long result =
Math.max(
100L,
200L
);
Javafloat型
// float型
float result =
Math.max(
1.5f,
2.5f
);
Javadouble型
// double型
double result =
Math.max(
10.5,
20.5
);
Java実務ではint型、long型、double型がよく利用されます。
実務でよくある利用例① 売上比較
業務システムでは非常によく登場します。
// 店舗A売上
int shopA = 100000;
// 店舗B売上
int shopB = 120000;
// 高い方を取得
int maxSales =
Math.max(
shopA,
shopB
);
// 結果表示
System.out.println(maxSales);
Java実行結果
120000
実務でよくある利用例② 最高点の取得
// テスト点数
int score1 = 85;
int score2 = 92;
// 高得点取得
int highScore =
Math.max(
score1,
score2
);
System.out.println(highScore);
Java実行結果
92
実務でよくある利用例③ 在庫数判定
// 現在在庫
int currentStock = 50;
// 最低保証在庫
int minimumStock = 100;
// 大きい方を採用
int stock =
Math.max(
currentStock,
minimumStock
);
Java在庫管理システムなどで活用されます。
3つ以上の値を比較したい場合
Math.max()は基本的に2つの値を比較します。
3つ以上の場合はネストして利用します。
// 3つの値
int a = 10;
int b = 50;
int c = 30;
// 最大値取得
int result =
Math.max(
Math.max(a, b),
c
);
System.out.println(result);
Java実行結果
50
多くの実務システムで利用されるテクニックです。
配列の最大値を求める
実務では配列やリストから最大値を求めるケースもあります。
// 点数一覧
int[] scores =
{80, 95, 70, 88};
// 最大値
int max = scores[0];
// ループ
for (int score : scores) {
// 大きい方を保持
max = Math.max(max, score);
}
System.out.println(max);
Java実行結果
95
最大値探索の定番パターンです。
内部でどのように動いているのか
イメージとしては次のような処理です。
// イメージコード
if (a >= b) {
return a;
}
return b;
Java大きい方を返しているだけなので非常にシンプルです。
実務で特によく使うパターン
最低値保証の実装です。
// 入力値
int point = -10;
// 0未満禁止
point =
Math.max(
point,
0
);
System.out.println(point);
Java実行結果
0
負の値を許可しない場合によく使われます。
入力値補正やバリデーションで頻出します。
Math.max()とif文の比較
同じ処理をif文で書くと次のようになります。
// if版
int result;
if (a > b) {
result = a;
} else {
result = b;
}
JavaMath.max()なら一行です。
// Math版
int result =
Math.max(a, b);
Javaコードが短くなり可読性も向上します。
Math.min()との違い
よくセットで登場するメソッドです。
Math.max()
// 大きい方
Math.max(10, 20);
Java結果
20
Math.min()
// 小さい方
Math.min(10, 20);
Java結果
10
最大値と最小値で用途が異なります。
実務で使えるテンプレート集
最大値取得テンプレート
// 大きい方取得
int max =
Math.max(a, b);
Java最低値保証テンプレート
// 0未満禁止
value =
Math.max(
value,
0
);
Java最大売上取得テンプレート
// 売上比較
double maxSales =
Math.max(
sales1,
sales2
);
Java配列最大値テンプレート
// 最大値探索
for (int value : values) {
max = Math.max(
max,
value
);
}
Java情報セキュリティの観点から見る重要性
Math.max()自体はセキュリティ機能ではありません。
しかし入力値の制限や閾値管理では非常に重要な役割を持ちます。
例えば、
- 最低金額保証
- 負数入力防止
- リソース制限管理
- アクセス制限閾値
- 監視システムの警告値管理
などです。
不正な値や異常値の影響を軽減するためにも、適切な下限・上限制御が重要です。
Math.max()はその実装で頻繁に利用されます。
初心者が覚えておくべき重要ポイント
- 2つの値のうち大きい方を返す
- int・long・float・doubleに対応している
- 最大値取得に利用できる
- 最低保証値の実装でよく使われる
- if文より簡潔に書ける
- 配列最大値探索に利用できる
- Math.min()とセットで覚えると便利である
まとめ
Math.max()は、2つの値の中から大きい方を返すJava標準メソッドです。
- 最大値を簡単に取得できる
- 数値比較を簡潔に記述できる
- 売上比較やランキング処理で活躍する
- 最低保証値の実装に便利である
- if文を減らして可読性を向上できる
- 配列やリストの最大値探索でも利用される
- Java開発者が必ず覚えておきたい数学系ユーティリティである
特に業務システムでは、「どちらが大きいか」「最低限どの値を保証するか」という判断が頻繁に行われます。Math.max()を活用することで、シンプルで読みやすく、保守しやすいコードを書けるようになります。また、Math.min()やMath.abs()と組み合わせることで、より柔軟な数値処理を実装できるようになります。
