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

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

Литералы

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

//: c03:Literals.java class Literals { char c = 0xffff; // максимальное шестнадцатеричное значение для char byte b = 0x7f; // максимальное шестнадцатеричное значение для byte short s = 0x7fff; // максимальное шестнадцатеричное значение для short int i1 = 0x2f; // Шестнадцатерично-десятичное (в нижнем регистре) int i2 = 0X2F; // Шестнацчатерично-десятичное (в верхнем регистре) int i3 = 0177; // Восьмеричное (ведущий ноль) // Шестнадцатеричные и восьмеричные также работают с long. long n1 = 200L; // суффикс для long long n2 = 200l; // суффикс для long long n3 = 200; //! long l6(200); // не допустимо float f1 = 1; float f2 = 1F; // суффикс для float float f3 = 1f; // суффикс для float float f4 = 1e-45f; // 10 - основание степени float f5 = 1e+9f; // суффикс для float double d1 = 1d; // суффикс для double double d2 = 1D; // суффикс для double double d3 = 47e47d; // 10 - основание степени} ///:~

Шестнадцатерично-десятичные (основание 16), которые работают со всеми интегрированными типами данных, указываются лидирующим символом 0x или 0X, за которыми следует 0—9 и далее a—f в верхнем, либо в нижнем регистре. Если вы попробуете проинициализировать переменную с помощью значения, большего, чем она может принять (не зависимо от числовой формы значения), компилятор выдаст вам сообщение об ошибке. Обратите внимание в приведенном выше коде на максимально допустимое шестнадцатерично-десятичное значение для char, byte и short. Если вы превысите его, компилятор автоматически преобразует значение к int и скажет вам, что необходимо сужающее приведение для присвоения. Вы найдете это место, остановившись на этой строке.

Восьмеричные (основание 8) указываются лидирующим нулем в числе и цифрами 0-7. Нет специальных литералов для бинарного представления в C, C++ или Java.

Замыкающие символы после литерного значения устанавливают тип. Символ L в верхнем или нижнем регистре означает long, верхний или нижний регистр F означает float, а верхний или нижний регистр D означает double.

Используется экспонентная запись, которую я всегда находил пугающей: 1.39 e-47f. В науки и инженерии ‘e’ означает основание натурального логарифма, примерно 2.718. (Более точное значение типа doubleдоступно в Java, как Math.E.) Здесь используется экспонентное выражение, такое как 1.39 x e-47, которое означает 1.39 x 2.718-47. Однако когда был создан FORTRAN, то решили, что e на самом деле будет означать “десять в степени”, что было странным решением, потому что FORTRAN был предназначен для науки и инженерии, и можно подумать, что его разработчики будут чувствительны к введению такой неоднозначности. [25] В любом случае это перешло в C, C++ и теперь в Java. Так что, если вы используете мышление в терминах e, как основания натурального логарифма, вы должны в уме выполнить перевод, когда используете такое выражение, как 1.39 e-47f в Java; это означает 1.39 x 10-47.

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

long n3 = 200;

нет неоднозначности, так что L после 200 будет излишним. Однако в примере

float f4 = 1e-47f; // 10 в степени

компилятор обычно принимает экспоненциальные числа как числа двойной точности, так что без завершающего f это даст вам ошибку, говорящую вам о том, что вы должны использовать приведение для преобразования double к float.


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

Первичное написание тестов | Общие ошибки дизайна | Где живет хранилище | Список аргументов | Ключевое слово static | Ваша первая Java программа | Вставка HTML | Упражнения | Присвоение | Математические операторы |


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