Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
Обратите внимание на то, что данному методу передается один параметр типа long. Но это совсем не означает, что при вызове ему нужно всегда передавать значение типа long. Правила автоматического продвижения типов в Java допускают передавать методу show () любое целочисленное значение. А количество отображаемых битов определяется переменной numbits. Группы из 8 битов разделяются в методе show () пробелами. Это упрощает восприятие длинных двоичных комбинаций.
Ниже приведен весь исходный код программы из файла ShowBit sDemo. j ava.
/*
Пример для опробования 5.3
Создание класса для отображения значений в двоичном виде.
*/
class ShowBits {
int numbits;
ShowBits(int n) {
numbits = n;
}
void show(long val) {
long mask = 1;
// сдвинуть значения 1 влево на нужную позицию
mask <<= numbits-1;
int spacer = 0;
for(; mask != 0; mask >>>= 1) {
if ((val & mask) != 0) System.out.print ("1") ;
else System.out.print("0");
spacer++;
if((spacer % 8) == 0) {
System.out.print(" ");
spacer = 0;
}
}
System.out.println();
}
}
// продемонстрировать класс ShowBits
class ShowBitsDemo {
public static void main(String args[]) {
ShowBits b = new ShowBits(8);
ShowBits i = new ShowBits(32);
ShowBits li = new ShowBits(64);
System.out.println("123 in binary: ");
b.show(123);
System.out.println("\n87987 in binary: ");
i.show(87987);
System.out.println("\n237658768 in binary: ");
li.show(237658768);
// можно также отобразить младшие разряды любого целого числа
System.out.println("\nLow order 8 bits of 87987 in binary: ");
b.show(87987);
}
}
Результат выполнения программы ShowBitsDemo выгладит следующим образом:
123 in binary:
01111011
87987 in binary:
00000000 00000001 01010111 10110011
237658768 in binary:
00000000 00000000 00000000 00000000 00001110 00101010 01100010 10010000
Low order 8 bits of 87987 in binary:
10110011
Оператор ?
Оператор ? — один из самых удобных в Java. Он часто используется вместо операторов if-else в следующей общей форме:
if (условие)
var = выражение_1;
else
var = выражение_2;
где значение, присваиваемое переменной var, определяет условие, управляющее выполнением оператора if. Оператор ? называется тернарным, поскольку он обрабатывает три операнда. Этот оператор записывается в следующей общей форме:
выражение_ 1 ? выражение_2 : выражение_3;
где выражение_1 должно быть логическим, т.е. возвращать тип boolean, а выражение_2 и выражение_3, разделяемые двоеточием, могут быть любого типа, за исключением void. Но типы второго и третьего выражений должны непременно совпадать.
Значение выражения ? определяется следующим образом. Сначала вычисляется выражение_1. Если оно дает логическое значение true, то вычисляется выражение_2, а его значение становится результирующим для всего выражения ?. Если же выражение_1 дает логическое значение false, то вычисляется выражение_3, а его значение стано вится результирующим для всего выражения ?. Рассмотрим пример, в котором сначала вычисляется абсолютное значение переменной val, а затем оно присваивается переменной absval.
absval = val < 0 ? -val : val; // получить абсолютное значение переменной val





