Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Листинг 1.3. Неверное определение переменной

Читайте также:
  1. IX. ОПРЕДЕЛЕНИЕ ПОБЕДИТЕЛЕЙ И ПРИЗЕРОВ
  2. VI. Определение победителей и награждение
  3. Асептика и антисептика. Стерилизация и дезинфекция. Определение понятий, методы, область применения.
  4. В которой автор дает определение интервью
  5. Вера в предустановление и предопределение вселяет спокойствие
  6. Верное побуждение, неверное хождение
  7. Виды диспозиций норм права, их краткая характеристика и примеры. определение.
  8. Виды рыночного спроса и его определение
  9. Виды санкций норм права, их краткая характеристика и примеры. определение.
  10. Выявление приоритетных конкурентов и определение силы их позиции

class InvalidDef{

public static void main (String [] args) {

byte b1 = 50, b2 = -99;

short k = b1 + b2; // Неверно! '

System.out.println("k=" + k);

}

}

Эти сообщения означают, что в файле InvalidDef.java, в строке 4, обнаружена возможная потеря точности (possible loss of precision). Затем приводятся обнаруженный (found) и нужный (required) типы, выводится строка, в которой обнаружена (а не сделана) ошибка, и отмечается символ, при разборе которого найдена ошибка. Затем указано общее количество обнаруженных (а не сделанных) ошибок (1 error).

Рис. 1.3. Сообщения компилятора об ошибке

В таких случаях следует выполнить явное приведение типа. В данном случае это будет сужение (narrowing) типа int до типа short. Оно осуществляется операцией явного приведения, которая записывается перед приводимым значением в виде имени типа в скобках. Определение

short k = (short)(b1 + b2);

Будет верным.

Сужение осуществляется просто отбрасыванием старших битов, что необходимо учитывать для больших значений. Например, определение

byte b = (byte) 300;

Даст переменной b значение 44. Действительно, в двоичном представлении числа 300, равном 100101100, отбрасывается старший бит и получается 00101100.

Таким же образом можно произвести и явное расширение (widening) типа, если в этом есть необходимость..

Если результат целой операции выходит за диапазон своего типа int или long, то автоматически происходит приведение по модулю, равному длине этого диапазона, и вычисления продолжаются, переполнение никак не отмечается.

Замечание

В языке Java нет целочисленного переполнения.

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

В языке Java шесть обычных операций сравнения целых чисел по величине:

больше >;

меньше <;

больше или равно >=;

меньше или равно <=;

равно ==;

не равно!=.

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

Результат сравнения — логическое значение: true, в результате, например, сравнения 3!= 5; или false, например, в результате сравнения 3 == 5.

Для записи сложных сравнений следует привлекать логические.операции. Например, в вычислениях часто приходится делать проверки вида а < х < b. Подобная запись на языке Java приведет к сообщению об ошибке, поскольку первое сравнение, а < х, даст true или false, a Java не знает, больше это, чем b, или меньше. В данном случае следует написать выражение (а < х) && (х < b), причем здесь скобки можно опустить, написать просто а < х && х < b, но об этом немного позднее.




Дата добавления: 2015-09-11; просмотров: 26 | Поможем написать вашу работу | Нарушение авторских прав

Примечание | В какой бы форме ни записывались символы, компилятор переводит их в Unicode, включая и исходный текст программы. | AName theName a2Vh36kBnMt456dX | Замечание для специалистов | Целые типы | Операции присваивания | Выражения | Приведение типа (тип). | Блоки операторов часто используются для ограничения области действия переменных и просто для улучшения читаемости текста программы. | Листинг 1.4. Вычисление корней квадратного уравнения |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав