code: public static String repeat(final String str, final int repeat) {
  		// Performance tuned for 2.0 (JDK1.4)
  
  		if (str == null) {
  			return null;
  		}
  		if (repeat <= 0) {
  			return EMPTY;
  		}
  		final int inputLength = str.length();
  		if (repeat == 1 || inputLength == 0) {
  			return str;
  		}
  		if (inputLength == 1 && repeat <= PAD_LIMIT) {
  			return repeat(str.charAt(0), repeat);
  		}
  
  		final int outputLength = inputLength * repeat;
  		switch (inputLength) {
  			case 1:
  				return repeat(str.charAt(0), repeat);
  			case 2:
  				final char ch0 = str.charAt(0);
  				final char ch1 = str.charAt(1);
  				final char[] output2 = new char[outputLength];
  				for (int i = repeat * 2 - 2; i >= 0; i--, i--) {
  					output2[i] = ch0;
  					output2[i + 1] = ch1;
  				}
  				return new String(output2);
  			default:
  				final StringBuilder buf = new StringBuilder(outputLength);
  				for (int i = 0; i < repeat; i++) {
  					buf.append(str);
  				}
  				return buf.toString();
  		}
  	}
docs: Repeat a String {@code repeat} times to form a new String.
  
  <pre>
  StringUtils.repeat(null, 2) = null
  StringUtils.repeat("", 0)   = ""
  StringUtils.repeat("", 2)   = ""
  StringUtils.repeat("a", 3)  = "aaa"
  StringUtils.repeat("ab", 2) = "abab"
  StringUtils.repeat("a", -2) = ""
  </pre>
  
  @param str    the String to repeat, may be null
  @param repeat number of times to repeat str, negative treated as zero
  @return a new String consisting of the original String repeated, {@code null} if null String input