title: Java varargs method param list vs. array
body: <p>Varargs: </p>
  
  <pre><code>public static void foo(String... string_array) { ... }
  </code></pre>
  
  <p>versus</p>
  
  <p>Single array param:</p>
  
  <pre><code>public static void bar(String[] string_array) { ... }
  </code></pre>
  
  <p>Java 1.6 seems to accept/reject the following:</p>
  
  <pre><code>String[] arr = {"abc", "def", "ghi"};
  foo(arr);  // accept
  bar(arr);  // accept
  foo("abc", "def", "ghi");  // accept
  bar("abc", "def", "ghi");  // reject
  </code></pre>
  
  <p>Assuming the above is true/correct, why not always use varargs instead of single array param?  Seems to add a touch of caller flexiblity for free.</p>
  
  <p>Can an expert share the internal JVM difference, if there is one?</p>
  
  <p>Thanks.</p>