Пакет java.lang. Классы StringBuffer и StringBuilder (1) Отличаются эти классы друг от друга только тем, что класс StringBuilder не рекомендуется применять.

Презентация:



Advertisements
Похожие презентации
Java. Part 2. Спецификаторы доступа public private protected не указан – доступ в пределах пакета Могут использоваться перед классами, методами, полями.
Advertisements

Операции Условная операция ? : Если истинно, то результатом будет, иначе. Например, int x = a < b ? a : b вычисляет минимум из a и b.
Строки и классы-оболочки. Класс String. Конструкторы String s = new String(); char chars[] = { 'а', 'b', 'с' }; String s = new String(chars); char chars[]
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Строки Класс String инкапсулирует действия со строками. Объект типа String – строка, состоящая из произвольного числа символов, от 0 до 2*10 9. Литерные.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Лекция 2 С => C++ => C# Большие и маленькие буквы различаются (main, Main, MAIN, mAin – разные имена) После каждого оператора ставится точка с запятой.
b5_java_s4
СТРОКИ Работа со строками. Последовательность выполнения операторов int age = 45; String s = "Не is " + age + " years old."; age не String, а переменная.
Коллекции классов Лекция 12. С помощью коллекций вместо создания структур данных программист использует готовые структуры данных, не заботясь об их реализации.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Типы данных Инна Исаева. Переменные Переменная - это как ящик, в котором можно хранить данные. Каждая переменная имеет своё имя, она служит для хранения.
1 Работа со строками в Java В языках С и C++ отсутствует встроенная поддержка такого объекта, как строка. В этих ЯП при необходимости передается адрес.
Символы и строки. Процедуры и функции работы со строками.
JAVA, Кафедра ОСУ, АВТФ1 Работа со строками В пакет java.lang встроен класс, инкапсулирующий структуру данных, соответствующую строке. Класс.
Итак, мы научились проектировать интерфейс программы. Но для полноценной программы этого не достаточно. Нужно написать код программы, который будет манипулировать.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Транксрипт:

Пакет java.lang. Классы StringBuffer и StringBuilder (1) Отличаются эти классы друг от друга только тем, что класс StringBuilder не рекомендуется применять в многопоточных приложениях. Методы этого класса не синхронизированы и не могут гарантировать правильных результатов при одновременном доступе к экземпляру из нескольких потоков. Однако как следствие, методы класса StringBuffer работают значительно медленнее. Оба класса предоставляют функциональность модификации строковых данных "in place", т.е. без создания новой копии строки каждый раз, когда в ней что-то изменяется, как это делает класс String. Соответственно, использование StringBuffer или StringBuilder приводит к меньшей нагрузке на память и к более высокому быстродействию при обработке текстовых данных. Оба класса сохраняют свои строки в закрытых символьных массивах, размер которых (capacity) всегда удовлетворяет соотношению capacity >= length(). Далее в слайдах будет использоваться обозначение StringB* для этих классов. Конструкторы StringB*: StringB*( ) – создает новый экземпляр пустой последовательности символов начальной емкостью 16 символов. StringB*( int capacity ) – создает новый экземпляр пустой последовательности символов начальной емкостью capacity символов. StringB*( CharSequence sequence ) – создает новый экземпляр StringB*, содержащий ту же последовательность символов, что и заданный sequence. StringB*( String string ) – создает экземпляр, содержащий ту же последовательность символов, что и заданная строка string.

Пакет java.lang. Классы StringBuffer и StringBuilder (2) Каждый из группы перегруженных методов append добавляет передаваемую ему (или формируемую им путем преобразования аргумента в) последовательность символов в конец символьного массива и возвращает (ссылку на) собственный экземпляр StringB*: public StringB* append( boolean boolValue ) public StringB* append( char charValue ) public StringB* append( char[ ] charArray ) public StringB* append( char[ ] charArray, int offset, int count ) public StringB* append( charSequence sequence ) public StringB* append( charSequence sequence, int start, int end ) public StringB* append( double doubleValue ) public StringB* append( float floatValue ) public StringB* append( long longValue ) public StringB* append( int intValue ) public StringB* append( Object objValue )// добавляется objValue.toString( ) public StringB* append( String strValue ) public StringB* append( StringB* sbValue ) Аналогичен всем перечисленным метод: public StringB* appendCodePoint( int codePoint ) добавляющий один символ, кодовая точка которого передается в качестве аргумента.

Пакет java.lang Классы StringBuffer и StringBuilder (3) Подобно предыдущей группе методов каждый из перегруженных методов insert вставляет передаваемую ему (или формируемую им путем преобразования аргумента в) последовательность символов в указанное место символьного массива и точно так же возвращают (ссылку на) собственный экземпляр: public StringB* insert( int offset, boolean boolValue ) public StringB* insert( int offset, char charValue ) public StringB* insert( int offset, char[ ] charArray ) public StringB* insert( int index, char[ ] charArray, int offset, int count ) public StringB* insert( int offset, charSequence sequence ) public StringB* insert( int offset, charSequence sequence, int start, int end ) public StringB* insert( int offset, double doubleValue ) public StringB* insert( int offset, float floatValue ) public StringB* insert( int offset, long longValue ) public StringB* insert( int offset, int intValue ) public StringB* insert( int offset, Object objValue ) // вставляется objValue.toString( ) public StringB* insert( int offset, String strValue ) Нет методов: insert( int offset, StringB* sbValue) и insertCodePoint( int offset, int codePoint)

Пакет java.lang Классы StringBuffer и StringBuilder (4) Удалить в точности один символ из содержимого можно вызовом метода: public StringB* deleteCharAt( int index ) Удалить подпоследовательность символов начиная с позиции start и кончая позицией end можно с помощию метода: public StringB* delete( int start, int end ) Заменить подпоследовательность символов начиная с позиции start и кончая позицией end заданной строкой символов можно с помощию метода: public StringB* replace( int start, int end, String str ) Замена одного символа в заданной позиции указанным символом: public void setCharAt( int index, char ch ) Метод reverse переставляет символы в обратном порядке(первый-последний, второй-предпоследний, …): public StringB* reverse() Принудительное наращивание емкости внутреннего символьного массива либо до minCapacity, либо до (пред. емкость)*2+2 (что больше) выполняется методом: public void ensureCapacity( int minCapacity ) Принудительная установка длины строкового содержимого с удалением лишних символов, либо с добавлением символов с кодом \u0000: public void setLength( int newLength ) Следующий метод пытается привести емкость в соответствие длине содержимого: public void trimToSize()

Пакет java.lang. Классы StringBuffer и StringBuilder (5) Метод public int capacity() возвращает текущую емкость закрытого символьного массива. Остальные методы: public charcharAt( int index ) public int codePointAt( int index ) public int codePointBefore( int index ) public int codePointCount( int beginIndex, int endIndex ) public void getChars( int srcBegin, int srcEnd, char[ ] dst, int dstBegin ) public int indexOf( String str ) public int indexOf( String str, int fromIndex ) public int lastIndexOf( String str ) public int lastIndexOf( String str, int fromIndex ) public int length( ) public CharSequence subSequence( int start, int end ) public String substring( int start ) public String substring( int start, int end ) полностью аналогичны одноименным методам класса String.

Пакет java.lang Класс Enum. Перечисления При программировании часто бывает необходимо ограничить множество допустимых значений для данных некоторого типа. Так, например, день недели может иметь 7 разных значений, месяц в году - 12, а время года - 4. Для решения подобных задач во многих языках программирования со статической типизацией предусмотрен специальный тип данных - перечисление (enum). В Java перечисление появилось не сразу. Специализированная языковая конструкция enum была введена начиная с версии 1.5. Перечисления реализованы на уровне компилятора и виртуальной машины. Для поддержки перечислений в пакете java.lang появился специальный класс Enum. До этого использовались другие, значительно менее удобные, методы для реализации перечислений. Пример: enum Lights { GREEN, FLASHING_GREEN, YELLOW, RED, FLASHING_YELLOW } // цвета светофора enum Direct { UP, DOWN, NONE }// направление переключения Хотя в тексте это явно и не указано, но Lights и Direct являются полноценными классами и наследуют от класса java.lang.Enum. Константы, заданные в перечислении, преобразуются компилятором в константные вложенные классы. Каждому такому классу ставится в соответствие статическое поле (константное), означающее его порядковый номер (от 0) и возвращаемое методом ordinal( ): System.out.println( Lights.YELLOW.ordinal( ) ); // напечатается 2

Перечисления Пример1: Светофор (1) Lights currentLight = Lights.GREEN; Direct currentDirect = Direct.UP; int timeLength; … switch (currentDirect){ case UP: switch (currentLight) { case GREEN: currentLight = Lights.FLASHING_GREEN; timeLength = 3; break; case FLASHING_GREEN: currentLight = Lights.YELLOW; timeLength = 5; break; case YELLOW: currentLight = Lights.RED; timeLength = 50; break; case RED: currentLight = Lights.YELLOW; currentDirect = Direct.DOWN; timeLength = 5; break; } break;

Перечисления Пример1: Светофор (2) case DOWN: switch (currentLight) { case RED: currentLight = Lights.YELLOW; timeLength = 5; break; case YELLOW: currentLight = Lights.GREEN; timeLength = 50; break; case GREEN: currentLight = Lights.FLASHING_GREEN; currentDirect = Direct.UP; timeLength = 3; break; } break; case NONE: currentLight = Lights.FLASHING_YELLOW; timeLength = 3; break; } trafficLight.setLight( currentLight ); trafficLight.setTime( timeLength );

Перечисления Расширения Enum (1) Любое перечисление – это класс, наследуемый от java.lang.Enum, для которого можно определить свои конструкторы и методы: enum Lights { GREEN( 0 ), FLASHING_GREEN( 1 ), YELLOW( 2 ), RED( 3 ), FLASHING_YELLOW( -1 ) ; private int value; private int currentValue =0; Lights( int value ) { this.value=value; } public int getValue( ) { return value; } public Lights upLight() { if( currentValue < 3) currentValue += 1; return Lights.values( )[ currentValue ]; } public Lights downLight() { if( currentValue == 3 ) currentValue -= 1; else currentValue = 0; return Lights.values( )[ currentValue ]; }

Перечисления Пример2: Светофор Lights currentLight = Lights.GREEN; Direct currentDirect = Direct.UP; int timeLength; … switch (currentDirect){ case UP: timeLength = ( (currentLight = Lights.upLight( ) ) == Lights.FLASHING_GREEN)? 3 : ( currentLight == Lights.RED )? 50 : 5; if ( currentLight == Lights.RED) currentDirect = Direct.DOWN; break; case DOWN: timeLength = ((currentLight = Lights.downLight( ) ) == Lights.YELLOW)? 5 : 50; if ( currentLight == Lights.GREEN) currentDirect = Direct.UP; break; case NONE: currentLight = Lights.FLASHING_GREEN; timeLength = 3; break; } trafficLight.setLight( currentLight );

Перечисления Расширения Enum (2) Каждый константный вложенный класс перечисления может быть расширен: enum Operation { PLUS { double eval( double x, double y ) { return x + y; } }, MINUS { double eval( double x, double y ) { return x - y; } }, MULT { double eval( double x, double y ) { return x * y; } }, DIVIDE { double eval( double x, double y ) { return x / y; } }; abstract double eval( double x, double y ); double result; } public class Test { public static void main( String[ ] args ) { double x= , y=0.325; for( Operation op: Operation.values( ) ) { op.result = op.eval( x,y ); System.out.println( op.result ); }

Пакет java.lang Обертки примитивных типов (1) Примитивные типы в объектно-ориентированном языке реализованы исключительно из соображений эффективности, поскольку все операции со ссылочными типами значительно медленнее. Тем не менее, существуют ситуации, когда данные примитивных типов должны обрабатываться как ссылочные (в частности, все классы-коллекции хранят только объекты ссылочных типов). Для этого существуют классы-обертки: Примитивный типКласс-оберткаСуперкласс booleanBooleanObject byteByteNumber charCharacterObject shortShortNumber intIntegerNumber longLongNumber floatFloatNumber doubleDoubleNumber voidVoidObject

Пакет java.lang Обертки примитивных типов (2) Каждый класс-обертка (за исключением класса Void, экземпляр которого не может быть создан) имеет по два конструктора: Xxx( xxx value)// например: Long( long value) Xxx( String strValue)// Short shortWrapper = new Short( "123" ); Класс-обертка сохраняет значение, переданное ему в качестве аргумента конструктора в закрытом поле-константе, которое не может быть изменено. Обертки типов boolean, char и void наследуют от Object. Все обертки для численных примитивных типов (а также классы BigInteger и BigDecimal пакета java.math) наследуют от абстрактного класса Number, содержащего 6 абстрактных методов: public byte byteValue(); public short shortValue(); public int intValue(); public long longValue(); public float floatValue(); public double doubleValue(); Соответственно, каждый класс-обертка численного типа содержит реализации этих методов, выполняющие преобразование собственного значения к нужному типу и возврат этого значения.

Пакет java.lang Обертки примитивных типов (3) Каждый класс-обертка содержит статическое поле-константу TYPE – объект класса Class, представляющий собой соответствующий примитивный тип. Каждый класс-обертка (за исключением класса Void*) содержит публичные статические поля-константы, связанные с примитивным типом. Например, класс Boolean содержит константы TRUE и FALSE (имеющие тип этого же класса), все обертки численных типов содержат константы MIN_VALUE и MAX_VALUE своего примитивного типа и константу SIZE (типа int), обертки Float и Double дополнительно содержат константы, равные значениям POSITIVE_INFINITY, NEGATIVE_INFINITY и NaN, а также константы MIN_NORMAL, MIN_EXPONENT и MAX_EXPONENT, которые могут зависеть от программно-аппаратной платформы. Класс Character содержит большое количество констант, связанных с кодировкой UNICODE. Этот класс, кроме того, содержит два статических внутренних класса Character.Subset (подмножества символов UNICODE) Character.UnicodeBlock (блоки симолов различных языков) и статическое внутреннее перечисление Character.UnicodeScript (характеризующее различные системы записи, например Character.UnicodeScript.CYRILLIC ).

Пакет java.lang Методы классов-оберток (1) Все классы-обертки имеют статический метод public static Wrapper valueOf( primitive value ) возвращающий экземпляр соответствующей обертки. Если создание нового экземпляра не обязательно, то этот метод предпочтительнее вызова конструктора вида: new Wrapper( primitive value ), поскольку для часто используемых значений value (от -128 до 127) в классе Integer существует статический массив оберток, создаваемый и инициализируемый при его загрузке. Соответственно, этот метод работает быстрее и экономит память по сравнению с обязательным созданием экземпляра в конструкторе. За исключением класса Character все классы-обертки реализуют статический метод public static Wrapper valueOf( String source ) Фактически вызов этого метода эквивалентен следующему (след. слайд): public static Wrapper valueOf( Wrapper.parse_Primitive_( String source ) ) Все целочисленные классы-обертки имеют статический метод public static Wrapper valueOf( String source, int radix ) Фактически вызов этого метода эквивалентен следующему (см. слайд через один): public static Wrapper valueOf( Wrapper.parse_Primitive_( String source, int radix ) ) Например, вызов Integer.valueOf( "1001", 2 ) вернет экземпляр класса Integer, хранящего значение 9 (в десятичной системе счисления).

Пакет java.lang Методы классов-оберток (2) Все классы-обертки имеют статический метод public static int compare( primitive firstValue, primitive secondValue) возвращающий, как обычно: – 1 при firstValue < secondValue; 0 при firstValue == secondValue; 1 при firstValue > secondValue. Все классы обертки Все классы обертки реализуют интерфейс Comparable и, соответственно, содержат нестатический метод public int compareTo( Wrapper secondValue ) возвращающий те же величины (в качестве firstValue используется this.value). Все классы-обертки (кроме Character) имеют статический метод public static primitive parse_Primitive_( String source ) возвращающий соответствующее примитивное значение только в том случае, если строка source содержит корректное символьное представление значения данного примитивного типа (регистронезависимое) и больше ничего. Например: Boolean.parseBoolean( "TrUe" )// вернет true Boolean.parseBoolean( " true " )// вернет false Double.parseDouble( " e1" )// вернет , если десятичный разделитель =. Если значение в строке source некорректно, то будет выброшено исключение: Integer.parseInt( "2+3" )// выбросит исключение NumberFormatException

Пакет java.lang Методы классов-оберток (3) Все целочисленные классы-обертки имеют статический метод public static primitive parse_Primitive_( String source, int radix ) возвращающий соответствующее примитивное значение только в том случае, если строка source содержит корректное символьное представление значения данного примитивного типа (регистронезависимое) в заданной аргументом radix системе счисления. Значение аргумента radix может изменяться от Character.MIN_RADIX до Character.MAX_RADIX (обычно от 2 до 36, при этом буквы латинского алфавита a, b, … z независимо от регистра могут пониматься как цифры). Например: Integer.parseInt( "0", 10 )// вернет 0 Integer.parseInt( "+473", 10 )// вернет 473 Integer.parseInt( "–0", 10 )// вернет 0 Integer.parseInt( "–FF", 16 )// вернет -255 Integer.parseInt( " ", 2 )// вернет 102 Integer.parseInt( " ", 10 )// вернет Integer.parseInt( "– ", 10 )// вернет Integer.parseInt( " ", 10 )// выбросит NumberFormatException Integer.parseLong( " ", 10 )// вернет L Integer.parseInt( "99", 8 )// выбросит NumberFormatException Integer.parseInt( "Kodak", 10 )// выбросит NumberFormatException Integer.parseInt( "Kodak", 27 )// вернет

Пакет java.lang Методы классов-оберток (4) Кроме метода toString(), замещающего одноименный метод базового класса и возвращающего строковое представление хранимого примитивного значения, все классы- обертки имеют статический метод public static String toString( primitive primitiveValue ) возвращающий строковое представление аргумента. Классы Integer, Long, Float и Double имеют статический метод public static String toHexString( primitive primitiveValue ) возвращающий шестнадцатеричное строковое представление аргумента. Например: Double.toHexString( –1.0 ) // вернет строку –0x1.0p0 Integer.toHexString( –123 )// вернет строку ffffff85 Классы Integer и Long имеют еще два статических метода, возвращающие строковое бинарное и восьмеричное представление аргумента: public static String toBinaryString( primitive primitiveValue ) public static String toOctalString( primitive primitiveValue ) Для того же числа –123: Integer.toBinaryString( –123 )// вернет Integer.toOctalString( –123 )// вернет

Пакет java.lang Методы классов-оберток (5) Все целочисленные классы-обертки имеют статический метод public static Wrapper decode( String source ) осуществляющий преобразование десятичных, шестнадцатеричных или восьмеричных строковых представлений чисел со знаком или без знака в обертку. Шестнадцатеричные числа могут начинаться с любого из префиксов 0x, 0X или #, за которым следуют цифры от 0 до 9 или буквы от a до f (или от A до F). Восьмеричные числа начинаются с префикса 0, после которого могут следовать цифры от 0 до 7. Если строка source содержит некорректное представление числа или его значение выходит за пределы диапазона данного примитивного типа, то будет выброшено исключение NumberFormatException. Примеры: Integer.decode( "–#aA12345" )// вернет Integer, значение = – Short.decode( "0xaA12345" )// выбросит исключение Byte.decode( "0177" )// вернет Byte, значение = 127 Этот метод ( также как и методы.valueOf( … ) ) использует статический массив часто используемых оберток, поэтому он предпочтительнее вызова конструктора. Классы-обертки Short, Integer, Long и Character имеют статический метод public static primitive reverseBytes(primitive value) возвращающий значение, полученное путем зеркальной относительно середины перестановки байтов аргумента. Классы Integer и Long имеют статический метод, зеркально переставляющий биты: public static primitive reverse(primitive value)

Пакет java.lang Методы классов-оберток (6) Три класса – Integer, Long и Boolean реализуют статический метод, позволяющий получить экземпляр соответствующей обертки со значением, равным значению системного свойства ( System.getProperties(), System.getProperty( … ) ): public static Wrapper getWrapper( String nameProperty ) Классы Integer и Long кроме того имеют еще по два статических метода: public static Wrapper getWrapper( String nameProperty, primitive defaultValue ) public static Wrapper getWrapper( String nameProperty, Wrapper defaultValue ) возвращающие обертку, содержащую defaultValue при отсутствии системного свойства с указанным именем. Обертки всех целочисленных примитивов содержат специфические методы: static intbitCount( primitive val )Количество ненулевых бит static primitivehighestOneBit( primitive val )Значение старшего ненулевого бита static primitivelowestOneBit( primitive val )Значение младшего ненулевого бита static primitivenumberOfLeadingZeros( primitive val )Количество лидирующих нулевых бит static primitivenumberOfTrailingZeros( primitive val )Количество младших нулевых бит static primitiverotateLeft( primitive val, int distance )Циклический сдвиг влево static primitiverotateRight( primitive val, int distance )Циклический сдвиг вправо static intsignum( primitive val )-1: val 0

Пакет java.lang Методы классов-оберток (7) Специфические методы есть и у оберток Float и Double: static int (static long) floatToIntBits( float value ) doubleToLongBits( double value ) Нативное приведение (без преобразования, аналог union в С), учитыващее особое значение NaN static int (static long) floatToRawIntBits ( float value ) doubleToRawLongBits( double value ) Нативное приведение (без преобразования, аналог union в С) static float (static double) intBitsToFloat( int bits ) longBitsToDouble( long bits ) Нативное приведение (без преобразования, аналог union в С), учитывающее особые значения для NaN и Infinity booleanisInfinity( ) static booleanisInfinity( primitive value ) booleanisNaN( ) static booleanisNaN( primitive value )

Пакет java.lang Методы класса Character (1) Очень много констант и специфических методов у обертки Character. Есть большое количество всяческих статических проверок (c – char, p – code point, cp – хоть то, хоть это): static boolean isAlphabetic( p ) является ли символ алфавитным (есть иероглифические) static boolean isDefined( cp ) определен ли символ в кодировке Unicode static boolean isDigit( cp ) является ли символ цифрой Unicode static boolean isIdentifierIgnorable( cp ) нельзя ли использовать символ в идентификаторах; static boolean isISOControl( cp ) является ли символ управляющим; static boolean isJavaIdentifierPart( cp ) можно ли использовать символ в идентификаторах; static boolean isJavaIdentifierStart( cp ) может ли символ начинать идентификатор; static boolean isLetter( cp ) является ли символ буквой Java; static boolean isLetterOrDigit( cp ) является ли символ буквой или цифрой Unicode; static boolean isLowerCase( cp ) записан ли символ в нижнем регистре; static boolean isSpaceChar( cp ) является ли символ пробелом в смысле Unicode; static boolean isValidCodePoint( p ) является ли символ титульным; static boolean isUnicodeIdentifierPart( cp ) можно ли использовать символ в именах Unicode; static boolean isUnicodeIdentifierStart( cp ) является ли символ буквой Unicode; static boolean isUpperCase( cp ) записан ли символ в верхнем регистре; static boolean isWhitespace( cp ) является ли символ пробельным (более широкое понятие, чем isSpaceChar()).

Пакет java.lang Методы класса Character (2) Другие полезные методы: static intdigit( char ch, int radix )переводит цифру ch системы счисления с основанием radix в ее числовое значение типа int. static intforDigit( int digit, int radix )производит обратное преобразование целого числа digit в соответствующую цифру (тип char ) в системе счисления с основанием radix. static intcharCount( int cp )Возвращает 1, если cp можно представить одним значением типа char и 2, если требуется два значения. static intcodePointAt( CharSequence chars, int loc ) Возвращает кодовую точку для символьной позиции (location), заданной в параметре loc static intcodePointAt( char[] chars, int loc ) Возвращает кодовую точку для символьной позиции (location), заданной в параметре loc static intcodePointBefore( CharSequence chars, int loc ) Возвращает кодовую точку для символьной позиции (location) предшествующей заданной в параметре loc static intcodePointBefore( char[] chars, int loc ) Возвращает кодовую точку для символьной позиции (location) предшествующей заданной в параметре loc static boolean isSupplementaryCodePoint( int cp ) Возвращает true, если cp содержит дополнительный символ

Пакет java.lang Методы класса Character (3) Еще полезные методы: static boolean isHighSurrogate( char ch )Возвращает true, если ch содержит допустимый верхний суррогат символа. static boolean isLowSurrogate( char ch )Возвращает true, если ch содержит допустимый нижний суррогат символа. static boolean isSurrogatePair( char highCh, char lowCh ) Возвращает true, если highCh и lowCh формируют допустимую суррогатную пару. static boolean isValidCodePoint( int cp )Возвращает true, если cp содержит допустимую кодовую точку. static char[] toChars( int cp )Преобразует кодовую точку, содержащуюся в cp, в ее эквивалент типа char, который может потребовать двух значений типа char. Возвращает массив, содержащий результат преобразования. static inttoChars( int cp, char target[], int loc ) Преобразует кодовую точку cp в ее эквивалент типа char, запоминает результат в массиве target, начиная с позиции loc. static inttoCodePoint( char highCh, char lowCh ) Преобразует highCh и lowCh в их эквивалентные кодовые точки.

Пакет java.lang Внутренние классы класса Character Класс (public static) Character.Subset Экземпляры этого класса представляют определенные подмножества набора символов Unicode. Одно, наиболее часто и широко используемое семейство подмножеств определено в классе-наследнике Character.UnicodeBlock. Кто угодно может определить любые другие семейства подмножеств в своих собственных целях. Класс (public static final) Character.UnicodeBlock Это семейство символьных подмножеств в спецификации Unicode. Символьные блоки обычно определяют наборы символов, используемые для определенного сценария или цели, другими словами - языки. Каждый символ содержится не более, чем в одном блоке UnicodeBlock. В настоящее время в этом классе определено 210 блоков, т.е. языков (кроме английского, русского, китайского, … в это множество входят язык математических операторов, дополнительной пунктуации, верхних/нижних индексов, …) Класс предоставляет методы, позволяющие получить блок символов (язык) для заданного символа или кодовой точки или по имени блока.