Примитивные типы Java
Как уже говорилось, в Java определены следующие примитивные типы:
- целые типы;
- вещественные типы;
- булевский тип.
За оператором объявления примитивной переменной может следовать оператор инициализации «=
«, с помощью которого созданной переменной присваивается начальное значение.
1. Целые типы переменных
Целые типы различаются по размеру отведенной для них памяти. Характеристики целочисленных типов приведены в табл. 1.1.
Как видно из приведенной таблицы, целые переменные, за исключением типа char
, считаются в языке Java переменными со знаком.
Целочисленные константы могут задаваться в программе одним из трех способов: в виде десятичных, шестнадцатеричных и восьмеричных значений.
int
. Явно указать принадлежность к типу long
можно, добавив в конце числа букву "l"
или букву "L"
. Шестнадцатеричное значение задается с помощью символов "0x"
или "0X"
, за которым значение числа (цифры 0-9
и буквы A-F
или a-f
), например: 0x7FFF
.
Число в восьмеричной записи должно начинаться с нуля, за которым следует одна или несколько восьмеричных цифр, например 077777
.
Восьмеричные и шестнадцатеричные числа могут быть как положительными, так и отрицательными и изменяются в тех же диапазонах, что и числа в десятичном представлении (например, шестнадцатеричные числа типа byte
имеют максимальное значение 0x7F
и минимальное значение – 0x80
, а восьмеричные – соответственно 177
и – 200
) Примеры объявления целых переменных:int x = 0; long i, j, k; byte a1 = 0xF1, a2 = 0x07; short r1 = 017;
Символы в Java определяются с помощью ключевого слова char
и реализованы с использованием стандарта Unicode. Можно задать константу-символ в программе или как обычный символ. Символьное значение должны быть заключено в пару одиночных апострофов, например:
char symbol='f';
Другой способ записи символов: пара символов "\u"
, за которой следует четырехзначное шестнадцатеричное число (в диапазоне от 0000
до FFFF
), представляющее собой код символа в Unicode, например:
char symbol = '\u0042';
Некоторые символы, отсутствующие на клавиатуре, можно задавать с помощью так называемых escape-последовательностей, содержащих символ «
«, за которым следует буквенный символ, идентифицирующий escape-последовательность, как показано в табл. 1.2.
2. Вещественные типы переменных
Язык Java поддерживает числа и переменные с плавающей точкой обычной и двойной разрядности – типы float
и double
. Для чисел с плавающей точкой нужно указывает целую и дробную часть, разделенные точкой, например 4.6
или 7.0
. Для больших чисел можно использовать экспоненциальную форму записи (для отделения мантиссы от порядка используется символ "e"
или символ "E"
), например, число -3,58×107 записывается как –3.58E7
, а число 73,675×10-15 – как 73.675e-15
.
Характеристики вещественных типов Java представлены в табл. 2.1.
Переменные с плавающей точкой могут хранить не только численные значения, но и любой из особо определенных флагов (состоянии): отрицательная бесконечность, отрицательный нуль, положительная бесконечность, положительный нуль и «отсутствие числа» (not-a-number, NaN
).
Все константы с плавающей точкой подразумеваются принадлежащими к типу double
. Чтобы задать число типа float
, необходимо добавить в его конец символ "f"
или символ "F"
. Примеры объявления переменных с плавающей точкой:
float x1 = 3.5f, x2 = 3.7E6f, x3 = -1.8E-7f; double z = 1.0;
3. Булевский тип переменных
Переменные булевского типа (логические переменные) могут принимать одно из двух значений: «истина» или «ложь» и используются в языках программирования в операциях отношения (сравнения) и логических операциях. Так, результатом сравнения
5 > 3
будет «истина», а результатом сравнения
8
будет «ложь».
В отличие от C, где результату «ложь» сопоставлено целое значение типа int
, равное 0, а результату «истина» – ненулевое значение типа int
, и, соответственно, результатам сравнения присваивается целое значение (обычно 0 или 1), в Java для булевских переменных введен свой, отдельный тип данных.
Переменные булевского типа в Java задаются с помощью ключевого слова boolean и могут иметь лишь одно из двух значений: true или false, например
boolean switch = true;
Ссылка на первоисточник: Примитивные типы Java
Java – Примитивные и ссылочные типы данных, литералы
Переменные не что иное как зарезервированные места памяти для хранения значений. Это означает, что при создании переменной Вы резервируете некоторое пространство в памяти.
Основываясь на типе данных, который присвоен переменной, операционная система выделяет память и решает, что может быть сохранено в зарезервированную памяти. Поэтому, назначая различные типы данных для переменных, в Java можно хранить целые числа, десятичные дроби или символов в этих переменных.
Существует два типа данных в Java:
- простые или примитивные типы данных;
- ссылочные типы данных (ссылка/объект).
Примитивные типы данных
Существует 8 типов данных, поддерживаемых Java. Основные типы данных предопределены языком и названы по ключевому слову. Теперь давайте посмотрим в деталях эти восемь базовых типов данных существующих в языке программирования Java.
Тип byte
Тип short
Тип int
Тип long
Тип float
- Тип данных float является c одинарной точностью 32-битный IEEE 754 с плавающей точкой.
- Тип float используется главным образом для сохранения памяти в больших массивах чисел с плавающей точкой.
- По умолчанию – 0.0f.
- Тип float никогда не должен применяется для точного значения, например, валюты.
- Пример:
float f1 = 234.5f;
Тип double
- Тип данных double является c двойной точностью 64-битный IEEE 754 с плавающей точкой.
- Обычно используется для десятичных значений.
- Тип double никогда не должен применяется для точного значения, например, валюты.
- По умолчанию – 0.0d.
- Пример:
double d1 = 123.4;
Тип boolean
- Тип данных boolean представляет собой один бит информации.
- Существует только два возможных значения: true и false.
- Предназначен для простых признаков, которые позволяют отслеживать условия true или false.
- По умолчанию – false.
- Пример:
boolean one = true;
Тип char
- Тип данных char является одним 16-разрядным символом Юникода.
- Минимальная величина равна «\u0000» (или 0).
- Максимальная величина равна «\uffff» (или 65535 включительно).
- В Java char нужен для хранения любого символа.
- Пример:
char letterA ='A';
Ссылочные типы данных
Литералы в Java
Литерал – представление исходного кода как фиксированное значение. Оно представлено непосредственно в коде без каких-либо вычислений.
Литерал в Java можно назначить любой переменной из основного типа. Например:
byte a = 68; char a = 'A';
Byte, int, long, и short может выражаться десятичной (основание 10), шестнадцатеричной (основание 16) или восьмеричной (основание 8) системой исчисления.
При использовании литералов в Java, префикс 0 применяться для указания восьмеричной системы, а префикс 0x указывает на шестнадцатеричную систему. Например:
int decimal = 100; int octal = 0144; int hexa = 0x64;
Строковые литералы в языке Java задаются как и в большинстве других языков, заключив последовательность символов между парой двойных кавычек. Примеры строковых литералов:
"Hello World" "two\nlines" "\"This is in quotes\""
Типы литералов String и char могут содержать любые символы Юникода. Например:
char a = '\u0001'; String a = "\u0001";
Язык Java поддерживает несколько специальных управляющих последовательностей для литералов String и char:
Обозначение | Представление |
\n | Новая строка (0x0a) |
\r | Возврат каретки (0x0d) |
\f | Прогон страницы (0x0c) |
\b | Возврат на шаг (0x08) |
\s | пробел (0x20) |
\t | Табуляция |
\» | Двойная кавычка |
\’ | Апостроф |
\\ | Обратная косая черта |
\ddd | Восьмеричный символ (ddd) |
\uxxxx | Шестнадцатеричный символ UNICODE (xxxx) |
Более подробно управляющие последовательности с примерами рассмотрим в следующих уроках.
Следующий урок объясняет различные типы переменных и их использование. Это даст Вам хорошее представление о том, как они могут использоваться в java-классах, интерфейсах и т.д.
Источник: Java — Basic Datatypes.
Примитивные типы данных (Учебные руководства по Java™ > Изучение языка Java > Основы языка)
Язык программирования Java является статически типизированным, что означает, что все переменные должны быть сначала объявлены, прежде чем их можно будет использовать. Это включает в себя указание типа и имени переменной, как вы уже видели:
передача = 1;
Это сообщает вашей программе, что поле с именем «gear» существует, содержит числовые данные и имеет начальное значение «1». Тип данных переменной определяет значения, которые она может содержать, а также операции, которые могут выполняться над ней. В дополнение к int
, язык программирования Java поддерживает семь других примитивных типов данных . Примитивный тип предопределен языком и назван зарезервированным ключевым словом. Значения-примитивы не имеют общего состояния с другими значениями-примитивами. Язык программирования Java поддерживает восемь примитивных типов данных:
байт : Тип данных
байт
представляет собой 8-битное целое число в дополнении до двух со знаком. Он имеет минимальное значение -128 и максимальное значение 127 (включительно). 9Тип данных 0007 байт может быть полезен для экономии памяти в больших массивы, где экономия памяти действительно имеет значение. Их также можно использовать вместоint
, где их ограничения помогают прояснить ваш код; тот факт, что диапазон переменных ограничен, может служить формой документации.short : Тип данных
short
представляет собой 16-разрядное целое число в дополнении до двух со знаком. Он имеет минимальное значение -32 768 и максимальное значение 32 767 (включительно). Как сbyte
, применяются те же рекомендации: вы можете использоватьshort
для экономии памяти в больших массивах в ситуациях, когда экономия памяти действительно имеет значение.int : По умолчанию тип данных
int
представляет собой 32-разрядное целое число в дополнении до двух со знаком, минимальное значение которого равно -2 31 , а максимальное значение равно 2 31 -1. В Java SE 8 и более поздних версиях можно использовать тип данныхint
для представления 32-разрядного целого числа без знака, минимальное значение которого равно 0, а максимальное — 2 9.0043 32 -1. Используйте класс Integer, чтобы использовать тип данныхint
в качестве целого числа без знака. Дополнительную информацию см. в разделе Классы чисел. Статические методы, такие как, compareUnsigned
,, DivisionUnsigned
и т. д., были добавлены вInteger Класс
для поддержки арифметических операций для целых чисел без знака.long : Тип данных
long
представляет собой 64-битное целое число в дополнении до двух. Signed long имеет минимальное значение -2 63 и максимальное значение 2 63 -1. В Java SE 8 и более поздних версиях вы можете использовать тип данныхlong
для представления 64-битной длины без знака, которая имеет минимальное значение 0 и максимальное значение 2 64 -1. Используйте этот тип данных, когда вам нужен диапазон значений, более широкий, чем предоставленныйint
. КлассLong
также содержит такие методы, какcompareUnsigned
,DivisionUnsigned
и т. д., для поддержки арифметических операций для unsigned long.float : Тип данных
float
представляет собой 32-разрядное число с плавающей запятой одинарной точности IEEE 754. Его диапазон значений выходит за рамки этого обсуждения, но указан в раздел Типы, форматы и значения с плавающей запятой Спецификации языка Java. Как и в случае с рекомендациями дляbyte
иshort
, используйтеfloat
(вместоdouble
), если вам нужно сохранить память в больших массивах чисел с плавающей запятой. Этот тип данных никогда не следует использовать для точных значений, таких как валюта. Для этого вам нужно будет использовать Вместо этого используйте класс java.math.BigDecimal. Числа и строки охватываетBigDecimal
и другие полезные классы, предоставляемые платформой Java.double : Тип данных
double
представляет собой 64-разрядную двойную точность с плавающей запятой IEEE 754. Его диапазон значений выходит за рамки этого обсуждения, но указан в раздел Типы, форматы и значения с плавающей запятой Спецификации языка Java. Для десятичных значений этот тип данных обычно используется по умолчанию. Как упоминалось выше, этот тип данных никогда не следует использовать для точных значений, таких как валюта.boolean : Тип данных
boolean
имеет только два возможных значения:true
иfalse
. Используйте этот тип данных для простых флагов, которые отслеживают истинные/ложные условия. Этот тип данных представляет один бит информации, но его «размер» не является чем-то точно определенным.char : Тип данных
char
представляет собой один 16-битный символ Unicode. Он имеет минимальное значение'\u0000'
(или 0) и максимальное значение'\uffff'
(или 65 535 включительно).
В дополнение к восьми примитивным типам данных, перечисленным выше, язык программирования Java также обеспечивает специальную поддержку символьных строк через
Класс java.lang.String. Заключение строки символов в двойные кавычки автоматически создаст новый объект String
; например, String s = "это строка";
. Объекты String
являются неизменяемыми , что означает, что после создания их значения не могут быть изменены. Класс String
технически не является примитивным типом данных, но, учитывая особую поддержку, предоставляемую ему языком, вы, вероятно, склонны считать его таковым. Вы узнаете больше о классе String
в
Простые объекты данных
Значения по умолчанию
Не всегда необходимо присваивать значение при объявлении поля. Поля, которые объявлены, но не инициализированы, будут установлены компилятором в разумные значения по умолчанию. Вообще говоря, это значение по умолчанию будет равно нулю или 9.0007 null , в зависимости от типа данных. Однако полагаться на такие значения по умолчанию обычно считается плохим стилем программирования.
В следующей таблице приведены значения по умолчанию для вышеуказанных типов данных.
Тип данных | Значение по умолчанию (для полей) |
---|---|
байт | 0 |
короткий | 0 |
внутр. | 0 |
длинный | 0л |
поплавок | 0. 0f |
двойной | 0.0d |
символ | ‘\ u0000’ |
Строка (или любой объект) | ноль |
логическое значение | ложь |
Локальные переменные немного отличаются; компилятор никогда не присваивает значение по умолчанию неинициализированной локальной переменной. Если вы не можете инициализировать свою локальную переменную там, где она объявлена, обязательно присвойте ей значение, прежде чем пытаться ее использовать. Доступ к неинициализированной локальной переменной приведет к ошибке времени компиляции.
Литералы
Вы могли заметить, что ключевое слово new
не используется при инициализации переменной примитивного типа. Примитивные типы — это специальные типы данных, встроенные в язык; они не являются объектами, созданными из класса. Литерал — это представление исходного кода фиксированного значения; литералы представлены непосредственно в вашем коде, не требуя вычислений. Как показано ниже, можно присвоить литерал переменной примитивного типа:
логический результат = истина; заглавная буква C = 'C'; байт б = 100; короткий с = 10000; интервал я = 100000;
Целочисленные литералы
Целочисленный литерал имеет тип long
, если он заканчивается буквой L
или l
; в противном случае он имеет тип int
. Рекомендуется использовать заглавную букву L
, потому что строчную букву l
трудно отличить от цифры 1
.
Значения интегральных типов byte
, short
, int
и long
могут быть созданы из литералов int
. Значения типа long
, превышающие диапазон int
, могут быть созданы из литералов long
. Целочисленные литералы могут быть выражены в следующих системах счисления:
- Десятичная система счисления: база 10, цифры которой состоят из чисел от 0 до 9; это система счисления, которую вы используете каждый день
- Шестнадцатеричный: База 16, цифры которой состоят из цифр от 0 до 9и буквы от A до F
- Двоичный: основание 2, цифры которого состоят из чисел 0 и 1 (вы можете создавать двоичные литералы в Java SE 7 и более поздних версиях)
Для программирования общего назначения десятичная система, вероятно, будет единственной системой счисления, которую вы когда-либо будете использовать. Однако, если вам нужно использовать другую систему счисления, в следующем примере показан правильный синтаксис. Префикс 0x
указывает на шестнадцатеричный формат, а 0b
указывает на двоичный:
// Число 26 в десятичном формате интервал decVal = 26; // Число 26 в шестнадцатеричном формате int hexVal = 0x1a; // Число 26 в двоичном формате интервал бинВал = 0b11010;
Литералы с плавающей запятой
Литерал с плавающей запятой имеет тип float
, если он заканчивается буквой F
или f
; в противном случае его тип — double
, и он может дополнительно заканчиваться буквой D
или d
.
Типы с плавающей запятой ( float
и double
) также могут быть выражены с помощью E или e (для научного представления), F или f (32-битный литерал с плавающей запятой) и D или d (64-битный двойной литерал; это значение по умолчанию и по соглашению опущено).
двойной d1 = 123,4; // то же значение, что и d1, но в экспоненциальном представлении двойное d2 = 1,234e2; поплавок f1 = 123,4f;
Символьные и строковые литералы
Литералы типов char
и Строка
может содержать любые символы Unicode (UTF-16). Если ваш редактор и файловая система это позволяют, вы можете использовать такие символы непосредственно в своем коде. Если нет, вы можете использовать «экранирование Unicode», например '\ u0108'
(заглавная C с циркумфлексом) или "S\u00ED Se\u00F1or"
(Sí Señor на испанском языке). Всегда используйте «одинарные кавычки» для литералов char
и «двойные кавычки» для литералов String
. Управляющие последовательности Unicode могут использоваться в других местах программы (например, в именах полей), а не только в литералах char
или String
.
Язык программирования Java также поддерживает несколько специальных escape-последовательностей для символов
и строковых
литералов: \b
(возврат), \t
(табуляция), \n
(перевод строки), \f
(перевод страницы), \r
(возврат каретки), \"
(двойная кавычка), \'
(одинарная кавычка) и \
(обратная косая черта)
Существует также специальный литерал null
, который можно использовать в качестве значения для любого ссылочного типа. null
может быть присвоен любой переменной, кроме переменных примитивных типов. С мало что можно сделать. значение null
, не подлежащее проверке на его наличие, поэтому null
часто используется в программах как маркер, указывающий на то, что какой-то объект недоступен.
Наконец, существует также особый вид литералов, называемый литералом класса , образованный путем взятия имени типа и добавления » .class"
; например, String.class
. Это относится к объекту (типа класса
), который представляет сам тип.
Использование символов подчеркивания в числовых литералах
В Java SE 7 и более поздних версиях любое количество символов подчеркивания ( _
) может стоять где угодно между цифрами числового литерала. Эта функция позволяет вам, например. для разделения групп цифр в числовых литералах, что может улучшить читаемость кода.
Например, если ваш код содержит многозначные числа, вы можете использовать символ подчеркивания для разделения цифр на группы по три, аналогично тому, как вы используете знак препинания, например запятую, или пробел в качестве разделителя.
В следующем примере показаны другие способы использования символа подчеркивания в числовых литералах:
длинный номер кредитной карты = 1234_5678_9012_3456L; длинный номер социальной безопасности = 999_99_9999L; поплавок пи = 3,14_15F; длинные шестнадцатеричные байты = 0xFF_EC_DE_5E; длинные шестнадцатеричные слова = 0xCAFE_BABE; длинный maxLong = 0x7fff_ffff_ffff_ffffL; байтовые нибблы = 0b0010_0101; длинные байты = 0b11010010_01101001_10010100_10010010;
Подчеркивание можно ставить только между цифрами; нельзя ставить знаки подчеркивания в следующих местах:
- В начале или в конце номера
- Рядом с десятичной точкой в литерале с плавающей запятой
- До
F
илиL
суффикс - В позициях, где ожидается строка цифр
В следующих примерах показаны допустимые и недопустимые места размещения подчеркивания (выделенные) в числовых литералах:
// Неверно: нельзя ставить символы подчеркивания // рядом с десятичной точкой поплавок pi1 = 3_. 1415F; // Неверно: нельзя ставить символы подчеркивания // рядом с десятичной точкой поплавок pi2 = 3._1415F; // Неверно: нельзя ставить символы подчеркивания // перед суффиксом L long socialSecurityNumber1 = 999_99_9999_L; // OK (десятичный литерал) интервал х1 = 5_2; // Неверно: нельзя ставить символы подчеркивания // В конце литерала интервал х2 = 52_; // OK (десятичный литерал) интервал x3 = 5_______2; // Неверно: нельзя ставить символы подчеркивания // в префиксе системы счисления 0x интервал x4 = 0_x52; // Неверно: нельзя ставить символы подчеркивания // в начале числа интервал x5 = 0x_52; // OK (шестнадцатеричный литерал) интервал x6 = 0x5_2; // Неверно: нельзя ставить символы подчеркивания // в конце числа интервал x7 = 0x52_;