November 2025
Intermediate to advanced
984 pages
16h 17m
Japanese
私がかなり悩んだことの1つとして、演算子のオーバーロードが挙げられます。あまりに多くの人々がC++で乱用していたので、Javaには演算子のオーバーロードのしくみを取り入れないことにしました。これはかなり個人的な判断です。
—— James Gosling
Javaの生みの親†1
[†1] 『The C Family of Languages: Interview with Dennis Ritchie, Bjarne Stroustrup, and James Gosling』(https://fpy.li/16-1)より。
Pythonでは、元金、利率、期間を元にして以下のように利息を計算できます。
interest=principal*((1+rate)**periods-1)
1 + rateでの+のように、2つの被演算子の間に記述される演算子は中置演算子と呼ばれます。Pythonの中置演算子は任意の型の値を扱えます。例えばお金を扱う場合、元金と利率と期間が具体的な数値(つまりPythonでのdecimal.Decimalクラスのインスタンス)でさえあれば、上の式は期待通りに機能し、正確な計算結果を返します。
しかしJavaでは、より正確な計算結果を求めてfloatの代わりにBigDecimalを使おうとすると、その時点で中置演算子は使えなくなってしまいます。それぞれの演算子はプリミティブ型にしか対応していないためです。BigDecimalを使って同じ計算を行うには、次のようなコードが必要になります。
BigDecimalinterest=principal.multiply(BigDecimal.ONE.
Read now
Unlock full access