Spec-Zone .ru
спецификации, руководства, описания, API
|
Язык программирования Java со статическим контролем типов, что означает, что все переменные должны сначала быть объявлены прежде, чем они смогут использоваться. Это включает утверждение типа переменной и имени, как Вы уже видели:
int gear = 1;
Выполнение так говорит Вашей программе, что поле, названное "механизмом", существует, содержит числовые данные, и имеет начальное значение "1". Тип данных переменной определяет значения, которые он может содержать плюс операции, которые могут быть выполнены на нем. В дополнение к int
, язык программирования Java поддерживает семь других примитивных типов данных. Тип примитива предопределяется языком и называется зарезервированным словом. Примитивные значения не совместно используют состояние с другими примитивными значениями. Восемь примитивных типов данных, поддерживаемых языком программирования Java:
байт: byte
тип данных является целым числом дополнения 8-разрядного подписанного two. У этого есть минимальное значение-128 и максимальное значение 127 (включительно). byte
тип данных может быть полезным для сохранения памяти в многочисленных массивах, где сбережения памяти фактически имеют значение. Они могут также использоваться вместо int
где их пределы помогают разъяснить Ваш код; факт, что диапазон переменной ограничивается, может служить формой документации.
короткий: short
тип данных является целым числом дополнения 16-разрядного подписанного two. У этого есть минимальное значение-32 768 и максимальное значение 32 767 (включительно). Как с byte
, те же самые направляющие линии применяются: можно использовать a short
сохранять память в многочисленных массивах, в ситуациях, где сбережения памяти фактически имеет значение.
интервал: int
тип данных является целым числом дополнения 32-разрядного подписанного two. У этого есть минимальное значение-2 147 483 648 и максимальное значение 2 147 483 647 (включительно). Для интегральных значений этот тип данных является обычно выбором значения по умолчанию, если нет причина (как вышеупомянутое), чтобы выбрать что-то еще. Этот тип данных наиболее вероятно будет достаточно большим для чисел, которые Ваша программа будет использовать, но если Вы нуждаетесь в более широком диапазоне значений, использовать long
вместо этого.
долго: long
тип данных является целым числом дополнения 64-разрядного подписанного two. У этого есть минимальное значение-9 223 372 036 854 775 808 и максимальное значение 9,223,372,036,854,775,807 (включительно). Используйте этот тип данных, когда Вы нуждаетесь в диапазоне значений шире чем обеспеченные int
.
плавание: float
тип данных является одинарной точностью 32-разрядная плавающая точка IEEE 754. Его диапазон значений выходит за рамки этого обсуждения, но определяется в Типах С плавающей точкой, Форматах, и разделе byte
и short
, используйте a float
(вместо double
) если Вы должны сохранить память в многочисленных массивах чисел с плавающей точкой. Этот тип данных никогда не должен использоваться для точных значений, таких как валюта. Для этого Вы должны будете использовать BigDecimal
и другие полезные классы обеспечили платформой Java.
двойной: double
тип данных является двойной точностью 64-разрядная плавающая точка IEEE 754. Его диапазон значений выходит за рамки этого обсуждения, но определяется в Типах С плавающей точкой, Форматах, и разделе
булев: boolean
у типа данных есть только два возможных значения: true
и false
. Используйте этот тип данных для простых флагов та истина/ложь дорожки условия. Этот тип данных представляет один бит информации, но ее "размер" не что-то, что это точно определяется.
случайная работа: char
тип данных является единственным 16-разрядным символом Unicode. У этого есть минимальное значение '\u0000'
(или 0) и максимальное значение '\uffff'
(или 65 535 содержащий).
В дополнение к восьми примитивным упомянутым выше типам данных язык программирования Java также оказывает специальную поддержку для символьных строк через 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;
Можно поместить подчеркивания только между цифрами; невозможно поместить подчеркивания в следующие места:
F
или L
суффиксСледующие примеры демонстрируют допустимые и недопустимые размещения подчеркивания (которые выделяются) в числовых литералах:
// 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_;