
41.Методы классов Character и Complex.
Класс Character. В этом классе собраны статические константы и методы для работы с отдельными символами.
Статический метод
digit(char ch, in radix)
Переводит цифру ch системы счисления с основанием radix в ее числовое значение типа int .
Статический метод
forDigit(int digit, int radix)
производит обратное преобразование целого числа digit в соответствующую цифру (тип char ) в системе счисления с основанием radix .
Основание системы счисления должно находиться в диапазоне от Character.MIN_RADIX до Character.MAX_RADIX.
Метод tostring() переводит символ, содержащийся в классе, в строку с тем же символом.
Статические методы toLowerCase() , touppercase(), toTitieCase() возвращают символ, содержащийся в классе, в указанном регистре. Последний из этих методов предназначен для правильного перевода в верхний регистр четырех кодов Unicode, не выражающихся одним символом.
Множество статических логических методов проверяют различные характеристики символа, переданного в качестве аргумента метода:
isDef ined() — выясняет, определен ли символ в кодировке Unicode;
isDigit() — проверяет, является ли символ цифрой Unicode;
isidentifierignorable() — выясняет, нельзя ли использовать символ в идентификаторах;
isisocontroi() — определяет, является ли символ управляющим;
isJavaidentifierPart() — выясняет, можно ли использовать символ в идентификаторах;
isjavaidentifierstart() — определяет, может ли символ начинать идентификатор;
isLetter() — проверяет, является ли символ буквой Java;
IsLetterOrDigit() — Проверяет, является ли символ буквой или цифрой Unicode;
isLowerCase() — определяет, записан ли символ в нижнем регистре;
isSpaceChar() — выясняет, является ли символ пробелом в смысле Unicode;
isTitieCase() — проверяет, является ли символ титульным;
isUnicodeldentifierPart() — выясняет, можно ли использовать символ в именах Unicode;
isunicodeidentifierstart() — проверяет, является ли символ буквой Unicode;
isUpperCase() — проверяет, записан ли символ в верхнем регистре;
isWhitespace() — выясняет, является ли символ пробельным.
Точные диапазоны управляющих символов, понятия верхнего и нижнего регистра, титульного символа, пробельных символов, лучше всего посмотреть по документации Java API.
Класс Complex.Комплексные числа широко используются не только в математике. Они часто применяются в графических преобразованиях, в построении фракталов, не говоря уже о физике и технических дисциплинах. Но класс, описывающий комплексные числа, почему-то не включен в стандартную библиотеку Java. Восполним этот пробел.
Расширенные методы класса Complex
Следующий код возвращает действительную часть комплексного числа:
public double re(){
return x; }
Отсутствие статического ключевого слова означает, что этот метод может быть вызван только из сложного объекта. Например, следующий разумный способ использовать этот метод:
Complex z = Complex.fromPolar(1,2*Math.PI/7);
System.out.println("The number "+z.re()+" is the real part of a 7th root of unity.");
Квадрат абсолютного значения комплексного числа:
public double absSquared() {
return x*x+y*y; }
Абсолютное значение комплексного числа
public double abs() {
return Math.sqrt(absSquared()); }
Заметим, что это код вызывает нашу absSquared метод, а затем использует статический метод из java.lang.Math для вычисления квадратного корня. (Статический метод можно назвать только с помощью имени класса, в то время как большинство методов, таких как наш метод Re () необходим объект, чтобы называть их.)
Следующий метод возвращает комплексное сопряжение:
public double conj(){
return new Complex(x,-y); }
Обратим внимание, что этот метод вызывает один из наших конструкторов.
42.
примеры :
public String filename() {
int dot = fullPath.lastIndexOf(extensionSeparator);
int sep = fullPath.lastIndexOf(pathSeparator);
return fullPath.substring(sep + 1, dot);
}
public String path() {
int sep = fullPath.lastIndexOf(pathSeparator);
return fullPath.substring(0, sep);
}
String output = "Some text"; int count = 100; for(int i =0; i<count; i++) { output += i; } return output;
//More efficient version using mutable StringBuffer // set an initial size of 110 StringBuffer output = new StringBuffer(110); output.append("Some text"); for(int i =0; i<count; i++) { output.append(i); } return output.toString();
Вышеуказанный код создает только два новых объекта, StringBuffer и строковую константу, которая возвращается. StringBuffer расширяется по мере надобности, что, в свою очередь дороговато, так что лучше инициализировать StringBuffer корректным значением размера. Другой важный момент заключается в том, что создание дополнительных строк не ограничено математическим оператором "+", но существует некоторое количество методов, таких как concat(), trim(), substring(), replace() в классах String, которые генерируют новые объекты.
Класс StringTokenizer из пакета java.utii небольшой, в нем три конструктора и шесть методов.
Первый конструктор StringTokenizer (String str) создает объект, готовый разбить строку str на слова, разделенные пробелами, символами табуляций '\t', перевода строки '\n' и возврата каретки '\r' . Разделители не включаются в число слов.
Второй конструктор StringTokenizer (String str. String delimeters) задает разделители вторым параметром deiimeters , например:
StringTokenizer("Казнить,нельзя:пробелов-нет", " \t\n\r,:-");
Пример:
String str = "This is String , split by StringTokenizer, created by mkyong";
StringTokenizer st = new StringTokenizer(str);
System.out.println("---- Split by space ------");
while (st.hasMoreElements()) {
System.out.println(st.nextElement());
}
System.out.println("---- Split by comma ',' ------");
StringTokenizer st2 = new StringTokenizer(str, ",");
while (st2.hasMoreElements()) {
System.out.println(st2.nextElement());
}