Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лекция по дисциплине ldquo;Jvrdquo; Лектор- ст

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 21.5.2024

Лекция по дисциплине Java

Лектор: ст.преп. каф. Аркабаев Н.

Лекция 3. Примитивные типы данных (4 часа)

Все типы исходных данных, встроенные в язык Java, делятся на две группы: примитивные типы (primitive types) и ссылочные типы (reference types).

Ссылочные типы делятся на массивы (arrays), массы (classes) и интерфейсы (interfaces).

Примитивных типов всего восемь. Их можно разделить на логический (иногда говорят булев) тип boolean и числовые (numeric).

К числовым типам относятся целые (integral [Название "integral" не является устоявшимся термином. Так названа категория целых типов данных в книге The Java Language Specification, Second Edition. James Gosling, Bill Joy, Guy Steele, Gilad Bracha (см. введение). — Ред.]) и вещественные (floating-point) типы.

Целых типов пять: byte, short, int, long, char.

Символы можно использовать везде, где используется тип int, поэтому JLS причисляет их к целым типам. Например, их можно использовать в арифметических вычислениях, скажем, можно написать 2 + 'ж', к двойке будет прибавляться кодировка Unicode '\u04i6' буквы 'ж'. В десятичной форме это число 1046 и в результате сложения получим 1048.

Напомним, что в записи 2 + "Ж" плюс понимается как сцепление строк, двойка будет преобразована в строку, в результате получится строка "2ж".

Вещественных типов два: float и double.

На рис. 1.2 показана иерархия типов данных Java.

Поскольку по имени переменной невозможно определить ее тип, все переменные обязательно должны быть описаны перед их использованием. Описание заключается в том, что записывается имя типа, затем, через пробел, список имен переменных, разделенных запятой. Для всех или некоторых переменных можно указать начальные значения после знака равенства, которыми могут служить любые константные выражения того же типа. Описание каждого типа завершается точкой с запятой. В программе может быть сколько угодно описаний каждого типа.

Замечание для специалистов: Java — язык со строгой типизацией (strongly typed language).

Разберем каждый тип подробнее.

Рис. 1.2. Типы данных языка Java

1. Логический тип

Значения логического типа boolean возникают в результате различных сравнений, вроде 2 >3, и используются, главным образом, в условных операторах и операторах циклов. Логических значении всего два: true (истина) и false (ложь). Это служебные слова Java. Описание переменных этого типа выглядит так:

boolean b = true, bb = false, bool2;

Над логическими данными можно выполнять операции присваивания, например, bool2 = true, в том числе и составные с логическими операциями; сравнение на равенство b == bb и на неравенство b != bb, а также логические операции.

2. Логические операции

  •  отрицание (NOT) ! (обозначается восклицательным знаком); 
  •  конъюнкция (AND) & (амперсанд);
  •  дизъюнкция (OR) | (вертикальная черта); 
  •  исключающее ИЛИ (XOR) ^ (каре).

Они выполняются над логическими данными, их результатом будет тоже логическое значение true или false. Про них можно ничего не знать, кроме того, что представлено в табл. 1.

Таблица 1. Логические операции

b1

b2

!b1

b1&b2

b1|b2

b1^b2

true

true

false

true

true

false

true

false

false

false

true

true

false

true

true

false

true

true

false

false

true

false

false

false

Словами эти правила можно выразить так: 

  •  отрицание меняет значение истинности; 
  •  конъюнкция истинна, только если оба операнда истинны; 
  •  дизъюнкция ложна, только если оба операнда ложны; 
  •  исключающее ИЛИ истинно, только если значения операндов различны.

Замечание: Если бы Шекспир был программистом, фразу "То be or not to be" он написал бы так: 2b | ! 2b. 

Кроме перечисленных четырех логических операций есть еще две логические операции сокращенного вычисления:

  •  сокращенная конъюнкция (conditional-AND) &&; 
  •  сокращенная дизъюнкция (conditional-OR) ||.

Удвоенные знаки амперсанда и вертикальной черты следует записывать без пробелов.

Правый операнд сокращенных операций вычисляется только в том случае, если от него зависит результат операции, т. е. если левый операнд конъюнкции имеет значение true, или левый операнд дизъюнкции имеет значение false.

Это правило очень удобно и ловко используется, например, можно записывать выражения (n != 0) && (m/n > 0.001) или (n == 0) || (m/n > 0.001) не опасаясь деления на нуль.

Замечание: Практически всегда в Java используются именно сокращенные логические операции.

3. Целые типы

Спецификация языка Java, JLS, определяет разрядность (количество байтов, выделяемых для хранения значений типа в оперативной памяти) и диапазон значений каждого типа. Для целых типов они приведены в табл. 2.

Таблица 2. Целые типы

Тип

Разрядность (байт)

Диапазон

byte

1

от -128 до 127

short

2

от -32768 до 32767

int

4

от -2147483648 до 2147483647

long

8

от -9223372036854775808 до 9223372036854775807

char

2

от '\u0000' до '\uFFFF' , в десятичной форме от 0 до 65535

Впрочем, для Java разрядность не столь важна, на некоторых компьютерах она может отличаться от указанной в таблице, а вот диапазон значений должен выдерживаться неукоснительно.

Хотя тип char занимает два байта, в арифметических вычислениях он участвует как тип int, ему выделяется 4 байта, два старших байта заполняются нулями.

Примеры определения переменных целых типов:

byte b1 = 50, b2 = -99, bЗ;

short det = 0, ind = 1;

int i = -100, j = 100, k = 9999;

long big = 50, veryBig = 2147483648L;

char c1 = 'A', c2 = '?', newLine = '\n';

Целые типы хранятся в двоичном виде с дополнительным кодом. Последнее означает, что для отрицательных чисел хранится не их двоичное представление, а дополнительный код этого двоичного представления.

Дополнительный же код получается так: в двоичном представлении все нули меняются на единицы, а единицы на нули, после чего к результату прибавляется единица, разумеется, в двоичной арифметике.

Например, значение 50 переменной b1, определенной выше, будет храниться в одном байте с содержимым 00110010, а значение -99 переменной b2 — в байте с содержимым, которое вычисляем так: число 99 переводим в двоичную форму, получая 01100011, меняем единицы и нули, получая 10011100, и прибавляем единицу, получив окончательно байт с содержимым 10011101.

Смысл всех этих сложностей в том, что сложение числа с его дополнительным кодом в двоичной арифметике даст в результате нуль, старший бит просто теряется. Это означает, что в такой странной арифметике дополнительный код числа является противоположным к нему числом, числом с обратным знаком. А это, в свою очередь, означает, что вместо того, чтобы вычесть из числа А число В, можно к А прибавить дополнительный код числа В. Таким 'образом, операция вычитания исключается из набора машинных операций.

Над целыми типами можно производить массу операций. Их набор восходит к языку С, он оказался удобным и кочует из языка в язык почти без изменений. Особенности применения этих операций в языке Java показаны на примерах.

4. Вещественные типы

Вещественных типов в Java два: float и double. Они характеризуются разрядностью, диапазоном значений и точностью представления, отвечающим стандарту IEEE 754-1985 с некоторыми изменениями. К обычным вещественным числам добавляются еще три значения»

  1.  Положительная бесконечность, выражаемая константой POSITIVE_INFINITY и возникающая при переполнении положительного значения, например, в результате операции умножения 3.0*6е307.
  2.  Отрицательная бесконечность NEGATIVE_INFINITY.
  3.  "Не число", записываемое константой NaN (Not a Number) и возникающее при делении вещественного числа на нуль или умножении нуля на бесконечность.

Кроме того, стандарт различает положительный и отрицательный нуль, возникающий при делении на бесконечность соответствующего знака, хотя сравнение о.о == -о.о дает true.

Операции с бесконечностями выполняются по обычным математическим правилам.

Во всем остальном вещественные типы — это обычные, вещественные значения, к которым применимы все арифметические операции и сравнения, перечисленные для целых типов. Характеристики вещественных типов приведены в табл. 4.

В языке Java взятие остатка*от деления %, инкремент ++ и декремент — применяются и к вещественным типам.

Таблица 4. Вещественные типы

Тип

Разрядность

Диапазон

Точность

float

4

3,4е-38 < |х| < 3,4е38

7—8 цифр

double

8

1,7е-308<|х|<1,7е308

17 цифр

Примеры определения вещественных типов:

float х = 0.001, у = -34.789; 

double 21 = -16.2305, z2;

Поскольку к вещественным типам применимы все арифметические операции и сравнения, целые и вещественные значения можно смешивать в операциях. При этом правило приведения типов дополняется такими условиями:

  •  если в операции один операнд имеет тип double, то и другой приводится к типу double;
  •  если один операнд имеет тип float, то и другой приводится к типу float; 
  •  в противном случае действует правило приведения целых значений.

5. Операции присваивания

Простоя операция присваивания (simple assignment operator) записывается знаком равенства =, слева от которого стоит переменная, а справа выражение, совместимое с типом переменной:

х = 3.5, у = 2 * (х - 0.567) / (х + 2), b = х < у, bb = х >= у && b.

Операция присваивания действует так: выражение, стоящее после знака равенства, вычисляется и приводится к типу переменной, стоящей слева от знака равенства. Результатом операции будет приведенное значение правой части.

Операция присваивания имеет еще одно, побочное, действие: переменная, стоящая слева, получает приведенное значение правой части, старое ее значение теряется.

В операции присваивания левая и правая части неравноправны, нельзя написать 3.5 = х. После операции х = у изменится переменная х, став равной у, а после у = х изменится у.

Кроме простой операции присваивания есть еще 11 составных операций присваивания (compound assignment operators):

+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=; >>>=.

Символы записываются без пробелов, нельзя переставлять их местами.

Все составные операции присваивания действуют по одной схеме:

х ор= а эквивалентно х = (тип х), т. е. (х ор а).

Напомним, что переменная ind типа short определена у нас со значением 1. Присваивание ind +=7.8 даст в результате число 8, то же значение получит и переменная ind. Эта операция эквивалентна простой операции присваивания ind = (short)(ind + 7.8).

Перед присваиванием, при необходимости, автоматически производится приведение типа. Поэтому:

byte b = 1;

b = b + 10; // Ошибка!

b += 10; // Правильно!

Перед сложением ь + 50 происходит повышение ь до типа int, результат сложения тоже будет типа int и, в первом случае, не может быть Присвоен переменной ь без явного приведения типа. Во втором случае перед присваиванием произойдет сужение результата сложения до типа byte.

6. Условная операция

Эта своеобразная операция имеет три операнда. Вначале записывается произвольное логическое выражение, т. е. имеющее в результате true или false, затем знак вопроса, потом два произвольных выражения, разделенных двоеточием, например,

х < 0 ? 0 : х 

х > у ? х  — у : х + у

Условная операция выполняется так. Сначала вычисляется логическое выражение. Если получилось значение true, то вычисляется первое выражение после вопросительного знака ? и его значение будет результатом всей операции. Последнее выражение при этом не вычисляется. Если же получилось значение false, то вычисляется только последнее выражение, его значение будет результатом операции.

Это позволяет написать n == о ? да : m / n не опасаясь деления на нуль. Условная операция поначалу кажется странной, но она очень удобна для записи небольших разветвлений.

5




1. 54 Рубрика ПОЛИТИЧЕСКИЕ ПРОЦЕССЫ И ПОЛИТИЧЕСКИЕ ТРАНСФОРМАЦИИ В СОВРЕМЕННОМ МИРЕ
2. графическое изображение зависимости между величинами
3. Автомобильное колесо
4. аууаль в 164 году по хиджре 778 году по христианскому календарю
5. Ассоциации экономического взаимодействия регионов, как эффективная форма реализации их экономических интересов
6. В. Й. Шеллинг ФИЛОСОФСКИЕ ИССЛЕДОВАНИЯ О СУЩНОСТИ ЧЕЛОВЕЧЕСКОЙ СВОБОДЫ И СВЯЗАННЫХ С НЕЙ ПРЕДМЕТАХ П
7. Topics- Music; Environmentl Problems
8. вариант. 1.Кто предложил термин экология
9. Тема- Индивидуальнопсихологческие свойства музыканта мышление воображение Мышление и воображение
10. по теме концепцию или частное лицо
11. А Ни для кого не секрет что затруднения в инвестировании проектов которые испытывает строительный комп
12. Мастер года В пятницу 21 февраля в выставочных залах Национального музея Республики Коми ул
13. тема получив запрос пользователя должна построить его образ вектор в том же пространстве
14. 201 курс Число 9 января четверг ауд
15. Полимерные составы в обработке текстильных материалов
16. Информатике проведенного во 2 классе А в школе 1241 Составила и провела студент 34 группы С
17. тема продвижения на рынке товаров иили услуг а также технологий которая основана на тесном и продолжительн
18. кваліфикаційний рівень Напрям підготовки-спеціальність
19. Правовое регулирование обращения с опасными отходами
20. Ахах это ведь бред Не правда ли Девин Как можно писать о том чего ты не знаешь Это ведь просто маразм Ну