From 83929b2b98e7a1f3d4ed5d6e3f5bcd499989110b Mon Sep 17 00:00:00 2001 From: Christoph Dreis Date: Wed, 4 Jan 2017 19:13:06 +0100 Subject: [PATCH] Improve performance of StringUtils.capitalize() Issue: SPR-15094 --- .../org/springframework/util/StringUtils.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/util/StringUtils.java b/spring-core/src/main/java/org/springframework/util/StringUtils.java index 1d2734c889..dd73dbfe8d 100644 --- a/spring-core/src/main/java/org/springframework/util/StringUtils.java +++ b/spring-core/src/main/java/org/springframework/util/StringUtils.java @@ -516,15 +516,22 @@ public abstract class StringUtils { if (str == null || str.length() == 0) { return str; } - StringBuilder sb = new StringBuilder(str.length()); - if (capitalize) { - sb.append(Character.toUpperCase(str.charAt(0))); - } else { - sb.append(Character.toLowerCase(str.charAt(0))); + char baseChar = str.charAt(0); + char updatedChar; + if (capitalize) { + updatedChar = Character.toUpperCase(baseChar); + } + else { + updatedChar = Character.toLowerCase(baseChar); + } + if (baseChar == updatedChar) { + return str; + } + char[] chars = str.toCharArray(); + chars[0] = updatedChar; + return new String(chars, 0, chars.length); } - sb.append(str.substring(1)); - return sb.toString(); } /**