title: Are Java function parameters always passed-by-value?
body: <p>Just a quick question about how parameters are passed in Java...</p>
  
  <pre>
  ...
              if ((index = stdout.indexOf(pattern)) != -1) {
                  tidy(stdout, index + pattern.length());
                  return true;
              } else if ((index = stderr.indexOf(pattern)) != -1) {
                  tidy(stderr, index + pattern.length());
                  return true;
  ...
  
      private void tidy(StringBuffer buffer, int i) {
          logger.info("Truncating buffer: " + buffer);
          buffer = new StringBuffer(buffer.substring(i));
          logger.info("Buffer now: " + buffer);
      }
  </pre>
  
  <p>In this case, will stdout and stderr (used as parameters in tidy()) have their values changed to new StringBuffer(buffer.substring(i))? My assumption is that they will as object variables(object pointers) are always passed-by-value?</p>