現在javaの学習中です。
復習として簡単なコードを打ち込んでそれを学んで自分が覚えている範囲から書き換えているのですがnumの値を表すコードを書いてみました。
P1:

class Sample1 {
    public static void main(String args[]) {
        int num = 100;
        System.out.println("This num is " + num);
    }
}

といった構文をまず P2:

class XXX {
    void display() {
        int num;
        num = 100;
        System.out.println("This num is " + num);
    }
}
class sample1 {
    public static void main(String args[]) {
        XXX p1 = new XXX();
        p1.display();
    }
}

と書いてみてその次に
P3:

class XXX {
    void display() {
        int num;
        num = 100;
        System.out.println("This num is " + num);
    }
}
class sample1 {
    public static void main(String args[]) {
        XXX p1 = new XXX();
        p1.display();
        sample3(20);
    }
    public static void sample3(int num1) {
        System.out.println("This num1 is " + num1);
    }
}

と書き加えてみました。
P3についてはネットに記述していたやつを真似て作成してみたのですが、
ここでvoid sample3(int num1)についてよくわからなく
void というのは引数が空のときにつかうものではないのでしょうか。
引数 int num1というのが書かれているのにどうしてvoidをつけないといけないのでしょうか。
また

class XXX {
    void display(int num) {
        num = 100;
        System.out.println("This num is " + num);
    }
}
class sample1 {
    public static void main(String args[]) {
        XXX p1 = new XXX();
        p1.display();
    }
}

といった記述にしてみたんですが、自分はp1.displayは空のvoid dsplay(int num)に戻って
num = 100をいれて This num is 100とだされると考えていたのですがエラーがでてしまいました。

class XXX {
    void display(int num) {
        System.out.println("This num is " + num);
    }
}
class sample1 {
    public static void main(String args[]) {
        XXX p1 = new XXX();
        p1.display(100);
    }
}

といった記述にすれば問題なくだされるのですが戻り値といったものや引数の約束事やその仕様、voidなどがいまいちわかりません。よろしくお願いたします。