Java

オーバーライドは「継承してるから使える」ではなく、「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になってこれになりがち)