src/share/classes/java/lang/String.java

Print this page

        

@@ -1008,17 +1008,18 @@
     }
 
     private boolean nonSyncContentEquals(AbstractStringBuilder sb) {
         char v1[] = value;
         char v2[] = sb.getValue();
-        int i = 0;
-        int n = value.length;
-        while (n-- != 0) {
+        int n = v1.length;
+        if (n != v2.length) {
+            return false;
+        }
+        for (int i = 0; i < n; i++) {
             if (v1[i] != v2[i]) {
                 return false;
             }
-            i++;
         }
         return true;
     }
 
     /**

@@ -1036,12 +1037,10 @@
      *          false} otherwise
      *
      * @since  1.5
      */
     public boolean contentEquals(CharSequence cs) {
-        if (value.length != cs.length())
-            return false;
         // Argument is a StringBuffer, StringBuilder
         if (cs instanceof AbstractStringBuilder) {
             if (cs instanceof StringBuffer) {
                 synchronized(cs) {
                    return nonSyncContentEquals((AbstractStringBuilder)cs);

@@ -1053,16 +1052,17 @@
         // Argument is a String
         if (cs.equals(this))
             return true;
         // Argument is a generic CharSequence
         char v1[] = value;
-        int i = 0;
-        int n = value.length;
-        while (n-- != 0) {
-            if (v1[i] != cs.charAt(i))
+        int n = v1.length;
+        if (n != cs.length())
                 return false;
-            i++;
+        for (int i = 0; i < n; i++) {
+            if (v1[i] != cs.charAt(i)) {
+                return false;
+            }
         }
         return true;
     }
 
     /**