Varargs:
public static void foo(String... string_array) { ... }
versus
Single array param:
public static void bar(
A vararg is simple syntactic sugar for an array.
if you call foo("abc", "def", "ghi"); then
compiler will call it as foo(new String[] {"abc", "def", "ghi"});
compiler will create one new array and pass it to foo().
One can't have both foo(String...) and foo(String[]). Since both are functionally same.