オーバーライドは「継承してるから使える」ではなく、「Object クラスの機能を自分流にカスタマイズする」こと。
`toString()` のオーバーライドは **継承してなくても使える**!
– なぜなら、**Javaのすべてのクラスは暗黙的に `Object` クラスを継承している**から。
toString() をオーバーライドすると System.out.println(obj); で中身をきれいに出力できるようになる!*equals()もよく使う。
import java.util.Arrays;
public class Fibonacci { static int callCount = 0; // 再帰呼び出し回数
public static void main(String[] args) { int[] memo = new int[51];
Arrays.fill(memo, -1); int result = fibonacci(memo, 50);
System.out.println("F(50) = " + result);
System.out.println("再帰呼び出し回数: " + callCount); }
//メモ化により **各nにつき再帰1回のみ** → **呼び出し回数 ≒ n回 (O(n))**
public static int fibonacci(int[] memo, int n) { callCount++;
if (n == 0) return memo[n] = 0;
if (n == 1) return memo[n] = 1;
if (memo[n] != -1) return memo[n];
return memo[n] = fibonacci(memo, n - 1) + fibonacci(memo, n - 2); }
}
# 列挙型
public enum Operation {PLUS, MINUS, MULTIPLY, DIVIDE}
をOperation.java
public class OperationSymbol {
public static void main(String[] args) {
System.out.println(Operation.PLUS.name());
System.out.println(Operation.MINUS.ordinal());
}
}
をOperationSymbol.javaで作ると、
PLUS
1
がでてくる。内部にname, ordinalのgetterがあるらしい.
貪欲法はちょっと、hash 再探索っぽい面がある気がする。
Object.equals(A,B)は、nullを考慮した比較ができる。
Hibernateのバージョン上げにも注意する。(Springboot2系から3系にしたらjavax から jakartaになってこれになりがち)
