public static int encodedLength(CharSequence sequence) {
    // Warning to maintainers: this implementation is highly optimized.
    int utf16Length = sequence.length();
    int utf8Length = utf16Length;
    int i = 0;

    // This loop optimizes for pure ASCII.
    while (i < utf16Length && sequence.charAt(i) < 0x80) {
      i++;
    }

    // This loop optimizes for chars less than 0x800.
    for (; i < utf16Length; i++) {
      char c = sequence.charAt(i);
      if (c < 0x800) {
        utf8Length += ((0x7f - c) >>> 31); // branch free!
      } else {
        utf8Length += encodedLengthGeneral(sequence, i);
        break;
      }
    }

    if (utf8Length < utf16Length) {
      // Necessary and sufficient condition for overflow because of maximum 3x expansion
      throw new IllegalArgumentException(
          "UTF-8 length does not fit in int: " + (utf8Length + (1L << 32)));
    }
    return utf8Length;
  }
public static int encodedLength(CharSequence sequence) {
    
    int utf16Length = sequence.length();
    int utf8Length = utf16Length;
    int i = 0;

    
    while (i < utf16Length && sequence.charAt(i) < 0x80) {
      i++;
    }

    
    for (; i < utf16Length; i++) {
      char c = sequence.charAt(i);
      if (c < 0x800) {
        utf8Length += ((0x7f - c) >>> 31); 
      } else {
        utf8Length += encodedLengthGeneral(sequence, i);
        break;
      }
    }

    if (utf8Length < utf16Length) {
      
      throw new IllegalArgumentException(
          "UTF-8 length does not fit in int: " + (utf8Length + (1L << 32)));
    }
    return utf8Length;
  }
public static int encodedLength ( CharSequence sequence ) { // Warning to maintainers: this implementation is highly optimized. int utf16Length = sequence . length ( ) ; int utf8Length = utf16Length ; int i = 0 ; // This loop optimizes for pure ASCII. while ( i < utf16Length && sequence . charAt ( i ) < 0x80 ) { i ++ ; } // This loop optimizes for chars less than 0x800. for ( ; i < utf16Length ; i ++ ) { char c = sequence . charAt ( i ) ; if ( c < 0x800 ) { utf8Length += ( ( 0x7f - c ) >>> 31 ) ; // branch free! } else { utf8Length += encodedLengthGeneral ( sequence , i ) ; break ; } } if ( utf8Length < utf16Length ) { // Necessary and sufficient condition for overflow because of maximum 3x expansion throw new IllegalArgumentException ( "UTF-8 length does not fit in int: " + ( utf8Length + ( 1L << 32 ) ) ) ; } return utf8Length ; }
Returns the number of bytes in the UTF-8-encoded form of {@code sequence}. For a string, this
method is equivalent to {@code string.getBytes(UTF_8).length}, but is more efficient in both
time and space.

@throws IllegalArgumentException if {@code sequence} contains ill-formed UTF-16 (unpaired
surrogates)
Returns the number of bytes in the UTF - 8 - encoded form of { @code sequence } . For a string this method is equivalent to { @code string . getBytes ( UTF_8 ) . length } but is more efficient in both time and space .