jdk/src/share/classes/java/lang/String.java
changeset 17698 ab37c47ff886
parent 17181 e3d13a15c5c0
child 18166 a24e00a7c5ae
equal deleted inserted replaced
17697:7ba520729c40 17698:ab37c47ff886
  1008     }
  1008     }
  1009 
  1009 
  1010     private boolean nonSyncContentEquals(AbstractStringBuilder sb) {
  1010     private boolean nonSyncContentEquals(AbstractStringBuilder sb) {
  1011         char v1[] = value;
  1011         char v1[] = value;
  1012         char v2[] = sb.getValue();
  1012         char v2[] = sb.getValue();
  1013         int i = 0;
  1013         int n = v1.length;
  1014         int n = value.length;
  1014         if (n != sb.length()) {
  1015         while (n-- != 0) {
  1015             return false;
       
  1016         }
       
  1017         for (int i = 0; i < n; i++) {
  1016             if (v1[i] != v2[i]) {
  1018             if (v1[i] != v2[i]) {
  1017                 return false;
  1019                 return false;
  1018             }
  1020             }
  1019             i++;
       
  1020         }
  1021         }
  1021         return true;
  1022         return true;
  1022     }
  1023     }
  1023 
  1024 
  1024     /**
  1025     /**
  1036      *          false} otherwise
  1037      *          false} otherwise
  1037      *
  1038      *
  1038      * @since  1.5
  1039      * @since  1.5
  1039      */
  1040      */
  1040     public boolean contentEquals(CharSequence cs) {
  1041     public boolean contentEquals(CharSequence cs) {
  1041         if (value.length != cs.length())
       
  1042             return false;
       
  1043         // Argument is a StringBuffer, StringBuilder
  1042         // Argument is a StringBuffer, StringBuilder
  1044         if (cs instanceof AbstractStringBuilder) {
  1043         if (cs instanceof AbstractStringBuilder) {
  1045             if (cs instanceof StringBuffer) {
  1044             if (cs instanceof StringBuffer) {
  1046                 synchronized(cs) {
  1045                 synchronized(cs) {
  1047                    return nonSyncContentEquals((AbstractStringBuilder)cs);
  1046                    return nonSyncContentEquals((AbstractStringBuilder)cs);
  1053         // Argument is a String
  1052         // Argument is a String
  1054         if (cs.equals(this))
  1053         if (cs.equals(this))
  1055             return true;
  1054             return true;
  1056         // Argument is a generic CharSequence
  1055         // Argument is a generic CharSequence
  1057         char v1[] = value;
  1056         char v1[] = value;
  1058         int i = 0;
  1057         int n = v1.length;
  1059         int n = value.length;
  1058         if (n != cs.length()) {
  1060         while (n-- != 0) {
  1059             return false;
  1061             if (v1[i] != cs.charAt(i))
  1060         }
       
  1061         for (int i = 0; i < n; i++) {
       
  1062             if (v1[i] != cs.charAt(i)) {
  1062                 return false;
  1063                 return false;
  1063             i++;
  1064             }
  1064         }
  1065         }
  1065         return true;
  1066         return true;
  1066     }
  1067     }
  1067 
  1068 
  1068     /**
  1069     /**