Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
12.05.2015
Размер:
1.82 Mб
Скачать

Глава 3. Типы данных, переменные и массивы _ 55

Байтовые переменные объявляются при помощи ключевого слова byte. На­пример, следующее предложение объявляет две байтовые переменные с именами b и с:

byte b,c;

Тип short

Тип short — 16-разрядный тип данных со знаком. Диапазон изменения его значений от -32,768 до 32,767. Пожалуй, это наименее используемый тип Java, так как он определен со старшим байтом в начале (в так называемом формате big-endian). Этот тип главным образом применим к 16-разрядным компьютерам, которые становятся все более и более редкими.

Некоторые примеры объявлений short переменных:

short s; short t;

Термин "Endianness" описывает, как многобайтовые типы данных, такие как short, int. и long, хранятся в памяти. Предположим, имеется два байта для представления типа short. Который из них идет первым — наиболее или наи­менее значащий? Термин "big-endian" означает, что наиболее значащий байт хранится первым, за ним следует наименее значащий. Машины типа SPARC и PowerPC можно назвать машинами big-endian, в то время как машины серии Intel x86 — little-endian (т. к. первым хранится менее значащий байт).

Тип int

Чаще всего используется тип int. Это 32-разрядный тип со знаком, который имеет диапазон от -2,147,483,648 до 2,147,483,647. В дополнение к другим применениям, переменные типа int обычно используются для управления циклами и индексирования элементов массива. Всякий раз, когда появляет­ся целочисленное выражение, включающее операнды типа byte, short, int и целочисленные константы, тип полного выражения расширяется (или по-вышается) до типа int прежде, чем выполняется вычисление.

Тип int наиболее универсален и эффективен и должен быть использован для расчетов, индексации элементов массива или выполнения целочислен­ных операций. Может показаться, что использование short или byte эко­номит память, но нет никакой гарантии, что Java не будет внутренне так или иначе расширять эти типы до int. Помните, что тип определяет пове­дение, а не размер. (Единственное исключение — массивы, где тип byte гарантирует использование только одного байта на элемент массива, в то время как snort будет забирать два байта, a int. — четыре байта.)

56 Часть I. Язык Java

Тип long

Тип long — 64-разрядный тип со знаком. Он полезен в тех случаях, когда тип int недостаточен (по размеру памяти), чтобы хранить желаемое значе­ние. Диапазон значений long весьма велик. Это делает его полезным при работе с большими целыми числами. Например, вот программа, которая вычисляет мили, пройденные светом за указанное число дней.

// Вычисляет расстояние, пройденное световым сигналом, // используя long-переменные, class Light {

public static void main(String argsf]) {

int lightspeed;

long days;

long seconds;

long distance;

// аппроксимация скорости света в мили в секунду lightspeed = 186000;

days =1000; // задать количество дней

seconds = days * 24 * 60 * 60; // преобразовать в секунды distance = lightspeed * seconds; // вычислить расстояние

System.out.print("За " + days);

System.out.print(" дней световой сигнал пройдет около "); System.out.println(distance + " миль."); } }

Эта программа генерирует следующий вывод:

За 1000 дней световой сигнал пройдет около 16070400000000 миль.

Ясно, что результат не мог быть получен в int-переменной.

Типы с плавающей точкой

Числа с плавающей точкой, также известные как вещественные числа, ис­пользуются при оценке выражений, которые требуют дробной точности. Например, вычисления квадратного корня или трансцендентных функций типа синуса и косинуса приводят к вещественному значению с определен­ной точностью, что и требует типа с плавающей точкой. Java реализует стандартный (IEEE-754) набор типов с плавающей точкой и соответствую­щие операции с ними. Существует два вида типов с плавающей точкой float и double, которые представляют числа с одинарной и двойной точ­ностью, соответственно. Их ширина и диапазоны представлены в табл. 3.2.

Соседние файлы в папке JavaLit