title: String.format printing address instead of string in varargs
body: <p>I am trying to write a wrapper method to prefix my log messages with method name and user id. I am using String.format to compose the message structure, but the problem comes with interpretation of varargs by String.format()</p>
  
  <pre><code>private String logMessage(@NonNull String methodName, @NonNull String userId, @NonNull String message, Object... arguments) {
      //String temp = String.format(message, arguments);
      //String msg = String.format("%s:: User:%s : %s", methodName, userId, temp);&lt;--This works
      String msg = String.format("%s:: User:%s : " + message, methodName, userId, arguments);&lt;--This prints address of arguments object
     log.info(msg);
  }
  </code></pre>
  
  <p>Calling the above method as </p>
  
  <pre><code>logMessage(methodName, userId, "Some text here: %s",
                  "test"));
  </code></pre>
  
  <p>The above call prints</p>
  
  <pre><code>someMethod:: User:1266 : Some text here: [Ljava.lang.Object;@705a8dbc
  </code></pre>
  
  <p>Why is String.format printing address of the String "test"?</p>