Kann man für Methoden-Parameter einen Standardwert angeben (z.B. public int func(int a=0))?

Das geht in Java mit der von dir beschriebenen Syntax nicht. Man kann allerdings die Methode func() überschreiben, um dieses Verhalten nachzubilden.

Im Codebeispiel wird beim Aufruf der parameterlosen Methode func() die Methode func(0) aufgerufen. func() gibt also den Wert 0 zurück.

static int func(int a) {
    return a * a;
}

static int func() {
    return func(0);
}

public static void main(String[] args) {
    func(5);  // gibt 25 zurück
    func();   // gibt 0 zurück
}