質問というか、Javaの可変長引数の仕様で疑問に思ったのですが、

void test(int... vector) {
 if (vector.length == 0)
  System.out.println("vectorは空です.");
 else
  for (int i : vector)
   System.out.print(i + " ");
}

こういうメソッドを書くと、可変長引数は引数なしでも実行できるので、
test();
と呼び出すと、"vectorは空です."と表示されます。
ですが、同名の以下のメソッドを同じクラスで定義すると、
オーバーロードされますので、引数が0のときの振る舞いが不定のように見えます。

void test() {
 test(1);
}

実際にやってみたところ、下の関数が呼び出され、"1 "が表示されました。
可変長引数よりもオーバーロードのほうが優先されることがわかりましたが、
引数的にはどちらでも呼び出せるので、しっくりこません。
よければこのようになる理由を教えてもらえますか?