Spec-Zone .ru
спецификации, руководства, описания, API
След: Изучение Языка Java
Урок: Основы Языка
Раздел: Переменные
Примитивные Типы данных
Домашняя страница > Изучение Языка Java > Основы языка

Примитивные Типы данных

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

int gear = 1;

Выполнение так говорит Вашей программе, что поле, названное "механизмом", существует, содержит числовые данные, и имеет начальное значение "1". Тип данных переменной определяет значения, которые он может содержать плюс операции, которые могут быть выполнены на нем. В дополнение к int, язык программирования Java поддерживает семь других примитивных типов данных. Тип примитива предопределяется языком и называется зарезервированным словом. Примитивные значения не совместно используют состояние с другими примитивными значениями. Восемь примитивных типов данных, поддерживаемых языком программирования Java:

В дополнение к восьми примитивным упомянутым выше типам данных язык программирования Java также оказывает специальную поддержку для символьных строк через java.lang. Строка class. Включение Вашей символьной строки в пределах двойных кавычек автоматически создаст новое String объект; например, String s = "this is a string";. String объекты являются неизменными, что означает, что когда-то создаваемый, их значения не могут быть изменены. String class не является технически примитивным типом данных, но рассмотрением специальной поддержки, оказанной этому языком, Вы будете, вероятно, склонны думать об этом как таковой. Вы узнаете больше String class в Простых Объектах данных

Значения по умолчанию

Не всегда необходимо присвоить значение, когда поле объявляется. Поля, которые объявляются, но не инициализируются, будут установлены в разумное значение по умолчанию компилятором. Вообще говоря, это значение по умолчанию будет нулем или null, В зависимости от типа данных. Доверие таким значениям по умолчанию, однако, обычно считают плохим стилем программирования.

Следующая диаграмма суммирует значения по умолчанию для вышеупомянутых типов данных.

Тип данных Значение по умолчанию (для полей)
байт 0
короткий 0
интервал 0
долго 0L
плавание 0.0f
двойной 0.0d
случайная работа '\u0000'
Строка (или любой объект)   нуль
булев ложь

Локальные переменные немного отличаются; компилятор никогда не присваивает значение по умолчанию неинициализированной локальной переменной. Если невозможно инициализировать свою локальную переменную, где она объявляется, удостоверьтесь, что присвоили ее значение прежде, чем Вы попытаетесь использовать ее. Доступ к неинициализированной локальной переменной приведет к ошибке времени компиляции.

Литералы

Вы, возможно, заметили что new ключевое слово не используется, инициализируя переменную типа примитива. Типы примитивов являются специальными типами данных, встроенными в язык; они не объекты, создаваемые из class. Литерал является представлением исходного кода фиксированного значения; литералы представляются непосредственно в Вашем коде, не требуя вычисления. Как показано ниже, возможно присвоить литерал переменной типа примитива:

boolean result = true;
char capitalC = 'C';
byte b = 100;
short s = 10000;
int i = 100000;

Целочисленные Литералы

Целочисленный литерал имеет тип long если это заканчивается буквой L или l; иначе это имеет тип int. Рекомендуется, чтобы Вы использовали прописную букву L потому что строчная буква l твердо различить от цифры 1.

Значения целочисленных типов byte, short, int, и long может быть создан из int литералы. Значения типа long это превышает диапазон int может быть создан из long литералы. Целочисленные литералы могут быть выражены этими системами счисления:

Для программирования общего назначения десятичная система счисления, вероятно, будет единственной системой счисления, которую Вы будете когда-либо использовать. Однако, если Вы должны использовать другую систему счисления, следующий пример показывает корректный синтаксис. Префикс 0x указывает шестнадцатеричный и 0b указывает на двоичный файл:

// The number 26, in decimal
int decVal = 26;
//  The number 26, in hexadecimal
int hexVal = 0x1a;
// The number 26, in binary
int binVal = 0b11010;

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

Литерал с плавающей точкой имеет тип float если это заканчивается буквой F или f; иначе его тип double и это может дополнительно закончиться буквой D или d.

Типы с плавающей точкой (float и double) может также быть выражен, используя E или e (для экспоненциального представления), F или f (32-разрядный литерал плавающий) и D или d (64-разрядный двойной литерал; это - значение по умолчанию и условно опускается).

double d1 = 123.4;
// same value as d1, but in scientific notation
double d2 = 1.234e2;
float f1  = 123.4f;

Символьные и Строковые литералы

Литералы типов char и String может содержать любой Unicode (UTF-16) символы. Если Ваш редактор и файловая система позволяют это, можно использовать такие символы непосредственно в Вашем коде. В противном случае можно использовать "escape Unicode" такой как '\u0108' (капитал C с циркумфлексом), или "S\u00ED Se\u00F1or" (Sí Señor на испанском языке). Всегда используйте 'одинарные кавычки' для char литералы и "двойные кавычки" для String литералы. Escape-последовательности Unicode могут использоваться в другом месте в программе (такой как в именах полей, например), не только в char или String литералы.

Язык программирования Java также поддерживает несколько специальных escape-последовательностей для char и String литералы: \b (клавиша Backspace), \t (вкладка), \n (перевод строки), \f (перевод формата), \r (возврат каретки), \" (двойная кавычка), \' (одинарная кавычка), и \\ (наклонная черта влево).

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

Наконец, есть также специальный вид литерала, названного литералом class, сформированным, беря имя типа и добавление".class"; например, String.class. Это обращается к объекту (типа Class) это представляет тип непосредственно.

Используя Символы подчеркивания в Числовых Литералах

В Java SE 7 и позже, любое число символов подчеркивания (_) может появиться где угодно между цифрами в числовом литерале. Эта опция позволяет Вам, например. разделить группы цифр в числовых литералах, которые могут улучшить удобочитаемость Вашего кода.

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

Следующий пример показывает другие способы, которыми можно использовать подчеркивание в числовых литералах:

long creditCardNumber = 1234_5678_9012_3456L;
long socialSecurityNumber = 999_99_9999L;
float pi =  3.14_15F;
long hexBytes = 0xFF_EC_DE_5E;
long hexWords = 0xCAFE_BABE;
long maxLong = 0x7fff_ffff_ffff_ffffL;
byte nybbles = 0b0010_0101;
long bytes = 0b11010010_01101001_10010100_10010010;

Можно поместить подчеркивания только между цифрами; невозможно поместить подчеркивания в следующие места:

Следующие примеры демонстрируют допустимые и недопустимые размещения подчеркивания (которые выделяются) в числовых литералах:

// Invalid: cannot put underscores
// adjacent to a decimal point
float pi1 = 3_.1415F;
// Invalid: cannot put underscores 
// adjacent to a decimal point
float pi2 = 3._1415F;
// Invalid: cannot put underscores 
// prior to an L suffix
long socialSecurityNumber1 = 999_99_9999_L;

// This is an identifier, not 
// a numeric literal
int x1 = _52;
// OK (decimal literal)
int x2 = 5_2;
// Invalid: cannot put underscores
// At the end of a literal
int x3 = 52_;
// OK (decimal literal)
int x4 = 5_______2;

// Invalid: cannot put underscores
// in the 0x radix prefix
int x5 = 0_x52;
// Invalid: cannot put underscores
// at the beginning of a number
int x6 = 0x_52;
// OK (hexadecimal literal)
int x7 = 0x5_2; 
// Invalid: cannot put underscores
// at the end of a number
int x8 = 0x52_;

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Переменные
Следующая страница: Массивы