OSDN Git Service

Depessimize string conversions.
authorElliott Hughes <enh@google.com>
Fri, 18 Dec 2009 05:09:08 +0000 (21:09 -0800)
committerElliott Hughes <enh@google.com>
Fri, 18 Dec 2009 18:35:28 +0000 (10:35 -0800)
Why does this idiom persist? It's ugly, and it's the least efficient way to do
it. (I found the ones in DecimalFormatSymbols while invesigating why
"new SimpleDateFormat()" burns through so many StringBuilders. grep(1) found
the rest.)

The DocumentBuilderImpl removes an unnecessary level of indirection, since we
implement Character.toString in terms of String.valueOf. (I wouldn't have
bothered except this was the only use of Character.toString in the core
libraries, and I added it myself a few weeks ago.)

libcore/icu/src/main/java/com/ibm/icu4jni/text/DecimalFormatSymbols.java
libcore/icu/src/main/java/com/ibm/icu4jni/util/Resources.java
libcore/luni/src/main/java/java/util/Date.java
libcore/xml/src/main/java/org/apache/harmony/xml/parsers/DocumentBuilderImpl.java

index ebda335..533c674 100644 (file)
@@ -125,23 +125,23 @@ public class DecimalFormatSymbols implements Cloneable {
 
     public void setDecimalSeparator(char symbol) {
         NativeDecimalFormat.setSymbol(this.addr,
-                UNumberFormatSymbol.UNUM_DECIMAL_SEPARATOR_SYMBOL.ordinal(), 
-                "" + symbol);
+                UNumberFormatSymbol.UNUM_DECIMAL_SEPARATOR_SYMBOL.ordinal(),
+                String.valueOf(symbol));
     }
 
     public void setDigit(char symbol) {
         NativeDecimalFormat.setSymbol(this.addr,
                 UNumberFormatSymbol.UNUM_DIGIT_SYMBOL.ordinal(), 
-                "" + symbol);
+                String.valueOf(symbol));
     }
 
     public void setGroupingSeparator(char symbol) {
         NativeDecimalFormat.setSymbol(this.addr,
                 UNumberFormatSymbol.UNUM_GROUPING_SEPARATOR_SYMBOL.ordinal(), 
-                "" + symbol);
+                String.valueOf(symbol));
         NativeDecimalFormat.setSymbol(this.addr,
                 UNumberFormatSymbol.UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL.ordinal(), 
-                "" + symbol);
+                String.valueOf(symbol));
     }
 
     public void setInfinity(String symbol) {
@@ -159,43 +159,43 @@ public class DecimalFormatSymbols implements Cloneable {
     public void setMinusSign(char symbol) {
         NativeDecimalFormat.setSymbol(this.addr,
                 UNumberFormatSymbol.UNUM_MINUS_SIGN_SYMBOL.ordinal(), 
-                "" + symbol);
+                String.valueOf(symbol));
     }
 
     public void setMonetaryDecimalSeparator(char symbol) {
         NativeDecimalFormat.setSymbol(this.addr,
                 UNumberFormatSymbol.UNUM_MONETARY_SEPARATOR_SYMBOL.ordinal(), 
-                "" + symbol);
+                String.valueOf(symbol));
     }
 
     public void setNaN(String symbol) {
         NativeDecimalFormat.setSymbol(this.addr,
                 UNumberFormatSymbol.UNUM_NAN_SYMBOL.ordinal(), 
-                "" + symbol);
+                String.valueOf(symbol));
     }
 
     public void setPatternSeparator(char symbol) {
         NativeDecimalFormat.setSymbol(this.addr,
                 UNumberFormatSymbol.UNUM_PATTERN_SEPARATOR_SYMBOL.ordinal(), 
-                "" + symbol);
+                String.valueOf(symbol));
     }
 
     public void setPercent(char symbol) {
         NativeDecimalFormat.setSymbol(this.addr,
                 UNumberFormatSymbol.UNUM_PERCENT_SYMBOL.ordinal(), 
-                "" + symbol);
+                String.valueOf(symbol));
     }
 
     public void setPerMill(char symbol) {
         NativeDecimalFormat.setSymbol(this.addr,
                 UNumberFormatSymbol.UNUM_PERMILL_SYMBOL.ordinal(), 
-                "" + symbol);
+                String.valueOf(symbol));
     }
 
     public void setZeroDigit(char symbol) {
         NativeDecimalFormat.setSymbol(this.addr,
                 UNumberFormatSymbol.UNUM_ZERO_DIGIT_SYMBOL.ordinal(), 
-                "" + symbol);
+                String.valueOf(symbol));
     }
  
     public Currency getCurrency() {
index 086f8d4..7eeae7d 100644 (file)
@@ -368,11 +368,11 @@ public class Resources {
                 return "-1";
             }
             int res = getFractionDigitsNative(key);
-            if(res < 0) {
+            if (res < 0) {
                 throw new MissingResourceException("couldn't find resource.", 
                         ISO4CurrenciesToDigits.class.getName(), key);
             }
-            return "" + res;
+            return Integer.toString(res);
         }
 
     }
index 37f5b6a..3610847 100644 (file)
@@ -714,11 +714,11 @@ public class Date implements Serializable, Cloneable, Comparable<Date> {
                 + " " + cal.getTimeZone().getID() + " " + cal.get(Calendar.YEAR);//$NON-NLS-1$ //$NON-NLS-2$
     }
 
-    private String toTwoDigits(int digit) {
-        if(digit >= 10) {
-            return "" + digit;//$NON-NLS-1$
+    private String toTwoDigits(int n) {
+        if (n >= 10) {
+            return Integer.toString(n);//$NON-NLS-1$
         } else {
-            return "0" + digit;//$NON-NLS-1$
+            return "0" + n;//$NON-NLS-1$
         }
     }
 
index 1a8122c..eacf0a0 100644 (file)
@@ -475,7 +475,7 @@ class DocumentBuilderImpl extends DocumentBuilder {
             if (ch < 0 || ch > Character.MAX_VALUE) {
                 return null;
             }
-            return Character.toString((char) ch);
+            return String.valueOf((char) ch);
         } catch (NumberFormatException ex) {
             return null;
         }