Ильдар Хабибуллин - Java 7 [Наиболее полное руководство]
- Название:Java 7 [Наиболее полное руководство]
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2012
- ISBN:978-5-9775-0735-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Ильдар Хабибуллин - Java 7 [Наиболее полное руководство] краткое содержание
Java 7 [Наиболее полное руководство] - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
class CharacterTest{
public static void main(String[] args){
char ch = ’9’;
Character cl = Character.valueOf(ch);
System.out.println("ch = " + ch);
System.out.println("c1.charValue() = " + cl.charValue());
System.out.println("number of ’A’ = " + Character.digit('A', 16));
System.out.println("digit for 12 = " +
Character.forDigit(12, 16));
System.out.println("c1 = " + c1.toString());
System.out.println("ch isDefined? " +
Character.isDefined(ch));
System.out.println("ch isDigit? " +
Character.isDigit(ch));
System.out.println("ch isIdentifierIgnorable? " + Character.isIdentifierIgnorable(ch));
System.out.println("ch isISOControl? " + Character.isISOControl(ch));
System.out.println("ch isJavaIdentifierPart? " + Character.isJavaIdentifierPart(ch));
System.out.println("ch isJavaIdentifierStart? " + Character.isJavaIdentifierStart(ch)) ;
System.out.println("ch isLetter? " + Character.isLetter(ch));
System.out.println("ch isLetterOrDigit? " + Character.isLetterOrDigit(ch));
System.out.println("ch isLowerCase? " + Character.isLowerCase(ch));
System.out.println("ch isSpaceChar? " + Character.isSpaceChar(ch));
System.out.println("ch isTitleCase? " + Character.isTitleCase(ch)) ;
System.out.println("ch isUnicodeIdentifierPart? " + Character.isUnicodeIdentifierPart(ch));
System.out.println("ch isUnicodeIdentifierStart? " + Character.isUnicodeIdentifierStart(ch)) ;
System.out.println("ch isUpperCase? " + Character.isUpperCase(ch));
System.out.println("ch isWhitespace? " + Character.isWhitespace(ch));
}
}
![]() |
Рис. 4.3.Методы класса Character в программе CharacterTest |
Вместе с классами-оболочками удобно рассмотреть два класса для работы со сколь угодно большими числами.
Класс BigInteger
Все примитивные целые типы имеют ограниченный диапазон значений. В целочисленной арифметике Java нет переполнения, целые числа приводятся по модулю, равному диапазону значений.
Для того чтобы было можно производить целочисленные вычисления с любой разрядностью, в состав Java API введен класс BigInteger, хранящийся в пакете java.math. Этот класс расширяет класс Number, следовательно, в нем переопределены методы
doubleValue(), floatValue(), intValue(), longValue(). Методы byteValue() и shortValue() не переопределены, а прямо наследуются от класса Number.
Действия с объектами класса BigInteger не приводят ни к переполнению, ни к приведению по модулю. Если результат операции велик, то число разрядов просто наращивается. Числа хранятся в двоичной форме с дополнительным кодом.
Перед выполнением операции числа выравниваются по длине распространением знакового разряда.
Шесть конструкторов класса создают объект класса BigInteger из строки символов (знака числа и цифр), массива байтов или задают случайное число. Чаще всего используются три конструктора:
□ BigInteger(String value) — объект будет хранить большое целое число, заданное строкой цифр, перед которыми может стоять знак минус;
□ BigInteger(String value, int radix) — задается строка цифр со знаком value, записанная в системе счисления с основанием radix;
□ BigInteger(byte[] value) — объект будет хранить большое целое число, заданное массивом value, содержащим двоичное представление числа в дополнительном коде.
Три константы — zero, one и ten — моделируют нуль, единицу и число десять в операциях с объектами класса BigInteger.
Метод toByteArray() преобразует объект в массив байтов.
Большинство методов класса BigInteger моделируют целочисленные операции и функции, возвращая объект класса BigInteger:
□ abs () — возвращает объект, содержащий абсолютное значение числа, хранящегося в данном объекте this;
□ add (x) — операция сложения this + x;
□ and(x) — операция побитовой конъюнкции this & x;
□ andNot(x) — операция побитовой дизъюнкции с дополнением this & (~x);
□ divide (x) — операция деления this / x;
□ divideAndRemainder (x) - возвращает массив из двух объектов класса BigInteger, со
держащих частное и остаток от деления this на x;
□ gcd(x) — наибольший общий делитель абсолютных значений объекта this и аргумента x;
□ multiply(x) — операция умножения this * x;
□ signum() — функция sign(x);
□ subtract (x) — операция вычитания this - x;
Листинг 4.6. Методы класса BigIntegerВ Программе BiglntegerTest
import java.math.BigInteger; class BigIntegerTest{
public static void main(String[] args){
BigInteger a = new BigInteger("99999999999999999"); BigInteger b = new BigInteger("88888888888888888888"); System.out.println("bits in a = " + a.bitLength()); System.out.println("bits in b = " + b.bitLength()); System.out.println("a + b = " + a.add(b)); System.out.println("a & b = " + a.and(b)); System.out.println("a & ~b = " + a.andNot(b)); System.out.println("a / b = " + a.divide(b));
BigInteger[] r = a.divideAndRemainder(b);
System.out.println("a / b: q = " + r[0] + ", r = " + r[1]); System.out.println("gcd(a, b) = " + a.gcd(b)); System.out.println("max(a, b) = " + a.max(b)); System.out.println("min(a, b) = " + a.min(b)); System.out.println("a mod b = " + a.mod(b)); System.out.println("1/a mod b = " + a.modInverse(b)); System.out.println("a An mod b = " + a.modPow(a, b));
System.out.println("a * b = " + a.multiply(b)); System.out.println("-a = " + a.negate()); System.out.println("~a = " + a.not()); System.out.println("a | b = " + a.or(b)); System.out.println("a л3 = " + a.pow(3)); System.out.println("a % b = " + a.remainder(b)); System.out.println("a << 3 = " + a.shiftLeft(3)); System.out.println("a >> 3 = " + a.shiftRight(3)); System.out.println("sign(a) = " + a.signum()); System.out.println("a — b = " + a.subtract(b)); System.out.println("a лb = " + a.xor(b));
}
}
![]() |
Рис. 4.4.Методы класса BigInteger в программе BigIntegerTest |
Обратите внимание на то, что в программу листинга 4.6 надо импортировать пакет
Читать дальшеИнтервал:
Закладка: