Назад
Вперед
1.1. Базовые типы данных
В примере демонстрируется использование
базовых типов данных Java.
Исходный текст примера
Архив проекта для Java WorkShop 2.0
Немного теории
Согласно описанию Java, в этом языке
программирования предусмотрены следующие типы
данных:
К базовым относится несколько численных типов,
а также один логический тип. Ниже мы привели
полный список численных типов:
Тип |
Размер, бит |
Значение по умолчанию |
Минимальное значение |
Максимальное значение |
byte |
8 |
0 |
-128 |
127 |
char |
16 |
'x0' |
0 |
65535 |
short |
16 |
0 |
-32768 |
32767 |
int |
32 |
0 |
-2147483648 |
2147483647 |
long |
64 |
0 |
-9223372036854775808 |
9223372036854775807 |
float |
32 |
0.0F |
-224*10104 |
224*10104 |
double |
64 |
0.0D |
-253*10970 |
253*10970 |
Логический тип boolean может принимать только два
значения: false и true. Они никаким образом не
соотносятся со значениями численных типов.
Поэтому вы не можете выполнить преобразование
типа boolean, например, в тип int.
В этом примере мы будем демонстрировать методы
работы с базовыми типами данных.
Описание примера
Наш пример представляет собой автономную
программу Java. Когда она запускается, управление
передается методу main:
public class BaseTypes
{
public static void main(String args[])
{
. . .
}
}
В этом методе мы последовательно выполняем ряд
операций над переменными различных базовых
типов.
Перед началом каждой серии операций мы выводим
на консоль название соответствующего типа
данных.
* boolean *
Set fBooleanValue to 'false'
fBooleanValue = false
* byte *
bByteValue = 127
bByteValue = -128
. . .
Работа с переменными типа boolean
Прежде всего мы выполняем инициализацию
переменной fBooleanValue, записывая в нее значение true:
boolean fBooleanValue = true;
Заметим, что так как логическое значение не
соотносится с численным, мы не можем выполнить
такую инициализацию, записав, например, единицу в
переменную fBooleanValue. Такая попытка будет
отвергнута еще на этапе компиляции:
boolean fBooleanValue = 1; // ОШИБКА!
Очень часто переменные типа boolean применяются
совместно с условными операторами. В нашем
примере мы проверяем значение переменной
fBooleanValue, и если оно равно true, выполняем с этой
переменной некоторые действия:
if(fBooleanValue)
{
. . .
}
Прежде всего, мы записываем в переменную
fBooleanValue значение false:
System.out.println(
"Set fBooleanValue to 'false'");
fBooleanValue = false;
Затем мы отображаем новое значение этой
переменной на консоли:
System.out.println("fBooleanValue = "
+ fBooleanValue);
Вот фрагмент текста, который выводится на
консоль при работе с переменной типа boolean:
* boolean *
Set fBooleanValue to 'false'
fBooleanValue = false
В исходном тексте нашего примера есть строка,
закрытая символом комментария:
// ERROR: Incompatible Type.
// Can't convert boolean to int
// int i = fBooleanValue;
Здесь мы пытаемся присвоить переменной типа int
значение логической переменной. Как мы уже
говорили, логическая переменная не имеет
никакого численного значения, поэтому попытка
будет отвергнута компилятором.
Работа с переменными типа byte
Переменная типа byte занимает в оперативной
памяти один байт. В нашем примере мы создаем
переменную этого типа с именем bByteValue, а затем
инициализируем ее:
byte bByteValue = 126;
На следующем шаге мы увеличиваем значение этой
переменной на единицу, а затем еще на единицу,
каждый раз отображая результат на консоли:
bByteValue += 1;
System.out.println("bByteValue = "
+ bByteValue);
bByteValue += 1;
System.out.println("bByteValue = "
+ bByteValue);
Так как максимальное значение переменной типа
byte равно 127, то после второго увеличения
происходит переполнение:
* byte *
bByteValue = 127
bByteValue = -128
В результате значение переменной bByteValue
становится равным -128.
Работа с переменными типа char
Создавая переменную типа char с именем chCharValue, мы
инициализируем ее следующим образом:
char chCharValue = '*';
Затем наша программа отображает текущее
значение переменной на консоли, увеличивает это
значение на единицу и отображает вновь:
System.out.println("chCharValue = "
+ chCharValue);
chCharValue += 1;
System.out.println("chCharValue = "
+ chCharValue);
В первый раз отображается символ *, а во второй -
символ +.
Главное, что нужно помнить при работе с
переменными типа char, это то что для представления
символов в них применяется кодировка Unicode. В этой
кодировке каждый символ представляется
16-разрядным значением, в котором помимо кода
символа имеется и номер набора символов.
В нашем примере мы присваиваем переменной
chCharValue значение, равное 0x0455, а затем отображаем
полученный символ на консоли:
chCharValue = 0x0455;
System.out.println("chCharValue = "
+ chCharValue);
Вот что там появится:
* char *
chCharValue = *
chCharValue = +
chCharValue = 3/4
Работа с переменными типа short
Когда вы работаете с переменными типа short, не
следует забывать, что максимальное значение,
которое можно в них записать, равно 32767.
В нашем примере мы инициализируем переменную
типа short с именем shShortValue максимально допустимым
значением, а затем увеличиваем на 2:
short shShortValue = 32767;
System.out.println("shShortValue = "
+ shShortValue
shShortValue +=2;
System.out.println("shShortValue = "
+ shShortValue);
В результате происходит переполнение и
значение переменной становится равным -32767.
Далее мы преобразуем значение, хранящееся в
переменной chCharValue типа char к переменной типа short и
выодим результат на консоль:
shShortValue = (short)chCharValue;
System.out.println("Value of chCharValue = "
+ shShortValue);
Вот что мы увидим на консоли:
* short *
shShortValue = 32767
shShortValue = -32767
Value of chCharValue = 1109
Число 1109 есть ни что иное, как десятичное
значение числа 0x0455, записанное нами в переменную
chCharValue на одном из предыдущих этапов.
Работа с переменными типа int
Фрагмент программы, работающий с переменными
типа int, демонстрирует переполнение в результате
превышения максимального значения.
Вначале мы инициализируем переменную iIntValue
максимальным значением 2147483647, а потом
увеличиваем содержимое переменной на 2:
int iIntValue = 2147483647;
System.out.println("iIntValue = "
+ iIntValue);
iIntValue += 2;
System.out.println("iIntValue = "
+ iIntValue);
Ниже представлен результат работы этого
фрагмента программы:
* int *
iIntValue = 2147483647
iIntValue = -2147483647
Работа с переменными типа long
Аналогичные действия выполняются и над
переменной lLongValue типа long:
System.out.println("\n* long *\n");
long lLongValue = 9223372036854775807L;
System.out.println("lLongValue = " +
lLongValue);
lLongValue += 1;
System.out.println("lLongValue = "
+ lLongValue);
После увеличения значения переменной lLongValue не
единицу происходит переполнение:
* long *
lLongValue = 9223372036854775807
lLongValue = -9223372036854775808
Работа с переменными типа float
Наша программа инициализирует переменную типа
float с именем flFloatValue значением 0.526, представленным
в следующем виде:
float flFloatValue = 526e-3F;
Затем мы отображаем исходное число и делим его
на три:
System.out.println("flFloatValue = "
+ flFloatValue);
flFloatValue /= 3;
System.out.println("flFloatValue = "
+ flFloatValue);
Значение полученной в результате
периодической дроби выводится на консоль:
* float *
flFloatValue = 0.526
flFloatValue = 0.17533334
Работа с переменными типа double
В этом фрагменте программы выполняются те же
самые действия, что и в предыдущем, однако
переменная имеет тип double:
double dblDoubleValue = 526E-3D;
System.out.println("dblDoubleValue = "
+ dblDoubleValue);
dblDoubleValue /= 3;
System.out.println("dblDoubleValue = "
+ dblDoubleValue);
Тип данных double допускает вычисления с
удвоенной точностью. Поэтому полученная
периодическая дробь будет содержать больше
значащих цифр, чем в случае типа float:
* double *
dblDoubleValue = 0.526
dblDoubleValue = 0.17533333333333334
Назад Вперед |