Типы данных java oracle
Этот механизм состоит из методов getXXX и setXXX , метода registerOutParameter и класса Types .
В этом разделе обсуждается все, что касается типов данных и их преобразование, а также приведены соответствующие таблицы преобразования типов.
8.2 Отображение типов данных SQL в типы данных Java
К сожалению, существует значительная разница между SQL-типами данных в различных СУБД. Иногда одно и то же называется разными именами. Непример, многие СУБД поддерживают типы данных SQL для больших двоичных объектов, но Oracle называет этот тип LONG RAW , в Sybase он называетсяt IMAGE , в Informix - BYTE , а в DB2 - LONG VARCHAR FOR BIT DATA .К счастью, программистам не обязательно отягощать себя именами типов SQL, используемых в таблицах БД. Большую часть времени прораммисты создают программы над уже созданной структурой БД, и им не приходится заботиться о названиях типов данных, используемых при создании таблиц.
JDBC объявляет набор базовых типов SQL в классе java.sql.Types . Эти типы отвечают наиболее типично используемые в БД типы данных. При программировании с использованием JDBC API программисты могут использовать эти JDBC-типы для обращения к базовым типам SQL незаботясь о том, какие имена типов данных использовались при создании БД. Эти типы полностью описаны в следующем разделе.
Наиболее типичный запрос, в котором существует необходимость использовать имена типов данных, - это SQL-запрос создания таблицы CREATE TABLE . Тут-то программист и должен позаботиться о правильном именовании типов данных. Если Вам нужно описание типов данных, поддерживаемых Вашей СУБД, то справьтесь об этом в документации к данной СУБД.
Если Вы хотите, чтобы Ваше приложение легко портировалось на различные СУБД, Вы должны выбрать одно из двух: либо используйте широко распространенные имена типов, такие как INTEGER , NUMERIC или VARCHAR , которые будут работать с любой СУБД, либо используйте метод java.sql.DatabaseMetaData.getTypeInfo для получения информации о SQL-типах, поддерживаемых данной СУБД и выбора имени SQL-типа, соответствующего определенному JDBC-типу.
JDBC определяет стандартное отображение JDBC-типов в Java-типы. Например, INTEGER соответствует int . Отображение позволяет манипулировать SQL-значениями с помощью типов данных языка Java.
Совсем не обязательно, что Java-типы должны полностью совпадать с JDBC-типами; они лишь должны быть способны без потерь сохранять и считывать параметры и считывать результаты SQL-запросов. Например, Java-объект String не совпадает в точности с JDBC-типами CHAR , однако достаточен для сохранения полной информации о значениях типа CHAR , VARCHAR и LONGVARCHAR .
8.3 Типы данных JDBC
Этот раздел описывает различные типы данных JDBC и то, как они связаны со стандартными SQL- и Java- типами данных.8.3.1 CHAR, VARCHAR и LONGVARCHAR
CHAR представляет из себя короткую строку с фиксированной длиной, VARCHAR представляет из себя короткую строку с переменной длиной, а LONGVARCHAR - длинную символьную строку с переменной длиной.Тип данных SQL CHAR , соответствующий JDBC-типу CHAR , определен в SQL-92 и поддерживается всеми СУБД. Он также принимает параметр, равный длине сроки. Так, CHAR(12) определяет 12-символьную строку. Все основные СУБД поддерживают длину CHAR до 254 символов.
Тип данных VARCHAR тоже определен в SQL-92 и поддерживается подавляющим большинством СУБД. Он принимает параметр, указывающий максимальную длину строки. Так, VARCHAR(12) описывает строку, длина которой может быть до 12 символов. В большинстве СУБД максимальная длина VARCHAR составляет 254 символов. При присвоении переменной типа VARCHAR строкового значения, БД запоминает длину этой строки и при выборке значения возвратит в точности первоначальную строку.
К сожалению, в SQL не существует устоявшегося эквивалента для типа LONGVARCHAR . Большинство СУБД поддерживают очень большие строки длиной аж до гигабайта, но имена таких SQL-типов различаются.
Программист не обязан различать три типа строк JDBC - CHAR , VARCHAR и LONGVARCHAR . Каждая строка может быть выражена объектом Java String , и существует возможность читать и писать SQL-операторы привильно не зная о том, какой именно из типов данных используется.
CHAR , VARCHAR и LONGVARCHAR должны отображаться либо в String , либо в char[] , но обычно именно String . Конвертирование из String в char[] выполняется коструктором new String с параметром char[]. Обратное преобразование выполняется методом String.getChars().
Стоит остановиться на обработке строк фиксированной длины CHAR(n) . Эта обработка заклчается в том, что СУБД (или драйвер) дополняет строку до нужной длины пробелами. Т.е. когда поле CHAR(n) извлекается из БД, драйвер сконвертирует его в объект String с длиной ровно n и пробелами в конце. И наоборот, когда объект String записывается в поле CHAR(n) , драйвер или СУБД преоразует его, дополнив с конца пробелами до длины n .
Метод ResultSet.getString , используемый для типов данных CHAR , VARCHAR и LONGVARCHAR , подходит для извлечения нормальных данных, но будет нехорошо, если значение LONGVARCHAR , занимающее несколько мегабайт, окажется в объекте String. Поэтому интерфейс ResultSet позволяет программисту извлекать значение LONGVARCHAR в виде потока ввода, из которого можно последовательно считывать данные кусками любого размера. Методы getAsciiStream и getUnicodeStream позволяют доставлять данные, сохраненные в колонке типа LONGVARCHAR , в виде потока Ascii- или Unicode-символов.
8.3.2 BINARY, VARBINARY и LONGVARBINARY
BINARY представляет собой маленький двойчный объект с фиксированный длиной, VARBINARY представляет собой маленький двойчный объект с переменной длиной, а LONGVARBINARY - большой двоичный объект с переменной длиной.К сожалению, использование этих типов не было стандартизовано, и различные СУБД поддерживают их в разнобой.
SQL-тип данных BINARY , соответствующий JDBC-типу BINARY - это нестандартное расширение SQL и реализовано только в некоторых СУБД. Этот тип принимает параметр, указывающий количество байтов. Например, BINARY(12) описывает 12-байтный двоичный тип данных. Обычно значения BINARY ограничены 254 байтами.
Тип SQL VARBINARY , соответствующий типу JDBC VARBINARY - это тоже нестандартное расширение SQL, реализованное только в некоторых СУБД. Он принимает параметр - максимальную длину последовательности байтов. Т.о. VARBINARY(12) описывает двоичные данные, чья длина может быть до 12-и байтов. Обычно значения VARBINARY ограничены 254 байтами. При присвоении переменной VARBINARY значения БД запоминает его длину, поэтому при выборке значения получается в точности оригинальное значение.
К сожалению, для JDBC-типа LONGVARBINARY не существует устойчивого SQL-эквивалента. Все основные СУБД поддерживают несколько видов типов очень больших двоичных данных, поддерживая максимальную длину как минимум гигабайт. При этом имена SQL-типов различаются.
BINARY , VARBINARY и LONGVARBINARY могут быть выражены в виде массивов byte[] в Java.
Для извлечении значений BINARY и VARBINARY рекомендуется использовать метод ResultSet.getBytes . Однако, если LONGVARBINARY хранит много мегабайтов, то лучше использовать getBinaryStream , как и случае с LONGVARCHAR . С помощью него можно считывать результат покусочно.
8.3.3 BIT
Тип данных JDBC BIT представляет собой один бит, который может принимать значения 0 или 1.SQL-92 определяет тип данных BIT . В отличие от JDBC, BIT в SQL-92 может использоваться как параметризованный тип данных в виде двоичной строки с фиксированной длиной. SQL-92 также разрешает использовать бит автономно, не в составе битовой строки - как раз то, что и подразумевается под битом в JDBC. К сожалению, тип BIT требуется только в полной спецификации SQL-92 и отсутствует во многих СУБД. В переносимом коде предпочитается использовать тип JDBC SMALLINT , который поддерживается всеми.
Рекомендуемое отображение для типа JDBC BIT - это boolean в языке Java.
8.3.4 TINYINT
Соответствующий тип в SQL, тоже TINYINT , в настоящее время существует не во всех СУБД, поэтому лучше использовать SMALLINT .
8.3.5 SMALLINT
JDBC-тип SMALLINT представляет собой 16-битное знаковое целое в диапазоне от -32768 до 32767.Соответствующий тип в SQL, SMALLINT , объявленный в SQL-92, широко используется практически всеми СУБД.
Предпочтительным эквивалентом этого типа в языке Java является short .
8.3.6 INTEGER
JDBC-тип INTEGER представляет собой 32-разрядное знаковое целое в диапазоне от -2147483648 до 2147483647.Соответствующий SQL-тип INTEGER определен в SQL-92 и широко используется всеми СУБД.
Предпочтительным эквивалентом типа INTEGER в Javе является int .
8.3.7 BIGINT
JDBC-тип BIGINT представляет собой 64-разрядное целое между -9223372036854775808 и 9223372036854775807.Соответствующий ему тип SQL BIGINT является нестандартным расширением языка SQL. На практике этот тип данных не реализован в СУБД, поэтому в портируемом коде рекомендуется избегать его использования.
Эквивалентом типа BIGINT в языке Java служит long.
8.3.8 REAL
JDBC-тип REAL представляет собой число с плавающей точкой одинарной точности, поддерживающее 7 разрядов в мантиссе.Соответствующий тип в SQL REAL определен в SQL-92 и широко, если не универсально, используется всеми СУБД.
Рекомендуемый эквивалент для типа REAL в Java - это float .
8.3.9 DOUBLE
Тип данных JDBC DOUBLE представляет число с плавающей точкой двйоной точности с 15-разрядной мантиссой.Соответствующий ему SQL-тип, DOUBLE PRECISION , определен в SQL-92 и широко используется во всех основных СУБД.
DOUBLE отображается на тип Java double .
8.3.10 FLOAT
JDBC-тип FLOAT эквивалентем типу DOUBLE . Он введен для совместимости с ранними версиями API. FLOAT представляет из себя число с плавающей точкой двойной точности с 15-разрядной мантиссой.Рекомендуемое отображение типа FLOAT - это тип Java double . Вследствие потенциальной угрозы путаницы между числами двойной точности в SQL FLOAT и числами одинарной точности в Java float лучше использовать тип JDBC DOUBLE .
8.3.11 DECIMAL and NUMERIC
JDBC-типы данных DECIMAL и NUMERIC очень похожи. Оба представляют собой десятичные числа с фиксированной точкой.Соответствующие типы данных SQL, DECIMAL и NUMERIC , определены в стандарте SQL-92 и очень распространены. Эти типы принимают два параметра - точность (precision) и масштаб (scale). Точность - это общее количество десятичных цифр, а масштаб - число цифр после точки. Масштаб должен быть всегда не больше точности. Например, "12.345" имеет точность 5 и масштаб 3, а значение ".11" - точность 2 и такой же масштаб. JDBC требует, чтобы как DECIMAL , так и NUMERIC поддерживали максимальное значение точности и масштаба как минимум 15.
Единственное отличие DECIMAL отd NUMERIC в спецификации SQL-92 - в том, что NUMERIC именно указанную точность, в то время как для типов данных DECIMAL возможно увеличение точности за пределы того значения, которое было задано при создании типа. Таким образом, колонка, созданная как NUMERIC(12,4) всегда будет представлена 12-ю цифрами, в то время как колонка, определенная как DECIMAL(12,4) , может хранить немного более точные значения.
Рекомендуемое отображение типов DECIMAL и NUMERIC - это объект java.math.BigDecimal , который также представляет собой числа с фиксированной точкой. Над типами java.math.BigDecimal можно выполнять арифметические операции сложения, вычитания, умножения и деления как с другими объектами java.math.BigDecimal , так и с целыми числами и числами с плавающей запятой.
Метод, рекомендуемый для извлечения значений типа DECIMAL и NUMERIC - это ResultSet.getBigDecimal . JDBC также позволяет трактовать эти значения как обычные строки или массивы символов. Т.е. программист может использовать метод getString для чтения DECIMAL или NUMERIC .
8.3.12 DATE, TIME и TIMESTAMP
-
Тип DATE представляет дату, содержащую день, месяц и год. Соответствующий SQL-тип DATE определен в SQL-92, но реализован не во всех СУБД. Некоторые БД предлагают альтернативные типы SQL, поддерживающие ту же семантику.
Так как стандартный Java-класс java.util.Date не соответствует ни одному из этих трех типов данных в точности (он включает информацию и о дате, и о времени) определяет три подкласса класса java.util.Date , соответствующих типам данных SQL:
-
java.sql.Date для информации о DATE . Поля часа, минуты, секунды и миллисекунды базового класса java.util.Date устанавливаются в 0.
Все три класса могут использоваться как java.util.Date , так как являются дочерними по отношению к нему. Например, методы интернационализации принимают объект java.util.Date в качестве аргумента, поэтому могут передаваться объекты, являющиеся экземплярами классов JDBC для работы со временем.
Объекты Timestamp состоят из унаследованных компонентов даты и времени, а также отдельной компоненты - наносекунды. Если объект java.sql.Timestamp используется так, где ожидается java.util.Date , то наносекундная составляющая теряется. Тем не менее, поскольку объект java.util.Date хранится с точностью до миллисекунды, эту степень точности можно сохранить и при конвертировании объекта из java.sql.Timestamp в java.util.Date . Это делается преобразованием наносекунд в миллисекунды (делением на 1000000) и прибавлением результата к объекту java.util.Date object. При таком преобразовании может быть потеряно до 999,999 наносекунд, но точность полученного объекта java.util.Date будет до одной миллисекундды.
В этом фрагменте кода демонстрируется проеобразование объекта java.sql.Timestamp в java.util.Date с точностью до миллисекунды:
8.4 Примеры отображения
В любой ситуации, где бы программист на Java не получал данные из БД, должно иметь место какое-либо отображение и преобразование типов. В большинстве случаев программист знает схему используемой БД: он знает, какие таблицы содержит БД и какого типа в этих таблицах колонки. Поэтому он может использовать строго типизированные методы доступа к ResultSet , PreparedStatement и CallableStatement . Далее рассматриваются три сценария.8.4.1 Простой SQL-запрос
В наиболее типичном случае пользователь выполняет простой SQL-запрос и принимает объект ResultSet с результатами. Значение, возвращенное из БД и сохраненное в колонке ResultSet , имеет определенный тип данных. Вызов метода ResultSet.getXXX возвращает эти значения согласно типам данных языка Java. Например, если колонка ResultSet содержит значения FLOAT , то метод getDouble считывает это значение как Java-тип double . Таблица в разделе 8.6.6 показывает, какие из методов getXXX могут использоваться для чтения различных JDBC-типов данных. (Пользователь, который не знает тип данных колонки ResultSet , может получить эту информацию с помощью методов объекта ResultSet.getMetaData.ResultSetMetaData getColumnType или getColumnTypeName ). Следующий фрагмент кода демонстрирует получение имен типов колонок:8.4.2 SQL-выражение с входными (IN) параметрами
Возможен сценарий, когда пользователь отсылает запрос с входными параметрами. В этих случаях пользователь вызывает методы PreparedStatement.setXXX для присвоения значений каждому входному параметру. Например, PreparedStatement.setLong(1, 2345678) присвоит первому параметру значение long 2345678 . Перед отсылкой в БД драйвер преобразует 2345678 в JDBC-тип данных BIGINT . Какой именно из JDBC-типов при этом используется, определяется стандартным отображением Java-типов на JDBC-типы данных, которое показано в таблице раздела 8.6.2.8.4.3 SQL-выражение с параметрами INOUT
В следующем суенарии пользователю надо вызвать хранимую процедуру, присвоить значение ее INOUT-параметров, извлечь значения из оезультата вызова и получить значения параметров на выходе. Этот случай несколько сложнее остальных и хорошо иллюстрирует работу отображения и преобразования данных.В этом сюжете первое, что необходимо сделать, это присвоить значения параметрам INOUT с помощью методов PreparedStatement.setXXX . К тому же, так как параметры также использоваться и для вывода, программист должен зарегистрировать тип данных каждого параметра. Это делается методом CallableStatement.registerOutParameter , который принимает в виде аргумента один из JDBC-типов, объявленных в классе Types . Программист считывает результаты, возвращенные в объект ResultSet , с помощью методов ResultSet.getXXX , а значения выходных параметров - с помощью CallableStatement.getXXX . Таблица в разделе 8.6.6 показывает, какие из методов ResultSet . getXXX использовать для считывания каких JDBC-типов.
Следующий пример демонстрирует вызов хранимой процедуры с названием getTestData с двумя INOUT параметрами. Сначала объект Connection con создает объект CallableStatement cstmt . Потом метод setByte устанавливает первый параметр в 25 (типа byte ). Драйвер сконвертирует 25 в TINYINT . Метод setBigDecimal устанавливает второй параметр в значение 83.75 . Драйвер сконвертирует его из java.math.BigDecimal в значение JDBC NUMERIC . Далее регистрируются параметры: первый - как TINYINT , второй - DECIMAL . После выполнения cstmt значения считываются из объекта ResultSet с помощью методов ResultSet.getXXX . Метод getString получает значение первой колонки в виде Java-объекта String , getInt возвращает значение второй колонки в виде int .
Потом методы CallableStatement.getXXX извлекают выходные значения параметров. Метод getByte возвращает TINYINT в виде byte , а getBigDecimal возвращает DECIMAL в виде java.math.BigDecimal .
" XXX " в методах CallableStatement.getXXX и PreparedStatement.setXXX - это тип данных Java.
8.5 Динамический доступ к данным
В большинстве случаев пользователю нужен доступ к результатам или параметрам, чьи типы данных известны уже на этапе компиляции. Тем не менее некоторым приложениям схема БД заранее не известна. Для этих целей JDBC предоставляет доступ к данным динамических типов.Следующие три метода и одна константа упрощают доступ к таким данным, чьи типы неизвестны на этапе компиляции:
В Java есть 8 примитивных типов, которые делят на 4 группы, вот они:
- Целые числа - byte, short, int, long
- Числа с плавающей точкой (иначе вещественные) - float, double
- Логический - boolean
- Символьный - char
Целочисленные типы различаются между собой только диапазонами возможных значений, например, для хранения номера элемента в таблице Менделеева пока хватит переменной типа byte.
Тип | Размер (бит) | Диапазон |
---|---|---|
byte | 8 бит | от -128 до 127 |
short | 16 бит | от -32768 до 32767 |
char | 16 бит | беззнаковое целое число, представляющее собой символ UTF-16 (буквы и цифры) |
int | 32 бит | от -2147483648 до 2147483647 |
long | 64 бит | от -9223372036854775808L до 9223372036854775807L |
Пример использования целочисленных типов:
Символы тоже относят к целочисленным типам из-за особенностей представления в памяти и традиций.
Тип | Размер (бит) | Диапазон |
---|---|---|
float | 32 | от 1.4e-45f до 3.4e+38f |
double | 64 | от 4.9e-324 до 1.7e+308 |
Тип | Размер (бит) | Значение |
---|---|---|
boolean | 8 (в массивах), 32 (не в массивах используется int) | true (истина) или false (ложь) |
В стандартной реализации Sun JVM и Oracle HotSpot JVM тип boolean занимает 4 байта (32 бита), как и тип int. Однако, в определенных версиях JVM имеются реализации, где в массиве boolean каждое значение занимает по 1-му биту.
Ссылочные типы - это все остальные типы: классы, перечисления и интерфейсы, например, объявленные в стандартной библиотеке Java, а также массивы.
Строки это объекты класса String, они очень распространены, поэтому в некоторых случаях обрабатываются отлично от всех остальных объектов. Строковые литералы записываются в двойных кавычках.
Если требуется создать ссылку на один из примитивных типов данных, необходимо использовать соответствующий класс-обертку. Также в таких классах есть некоторые полезные методы и константы, например минимальное значение типа int можно узнать использовав константу Integer.MIN_VALUE. Оборачивание примитива в объект называется упаковкой (boxing), а обратный процесс распаковкой (unboxing).
Тип | Класс-обертка |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
Рекомендуется использовать valueOf, он может быть быстрее и использовать меньше памяти потому что применяет кэширование, а конструктор всегда создает новый объект.
Получить примитив из объекта-обертки можно методом <имя примитивного типа>Value.
В этой статье мы не будем использовать ранее установленную IDE и JDK. Однако не беспокойтесь, ваш труд не был напрасным. Уже в следующей статье мы будем изучать переменные в Java и активно кодить в IDEA. Эта же статья является обязательным этапом. И в начале вашего обучения, вы, возможно, будете не раз к ней возвращаться.
1998 - пин-код от моей кредитки является ничем иным как числом. По-крайней мере для нас - для людей. 36,5 - температура, которую показывают все термометры в разных ТРЦ. Для нас это дробное число или число с плавающей запятой. "Java Core для самых маленьких" - а это название данной серии статей, и мы воспринимаем это как текст. Так к чему же я веду. А к тому, что Джаве (так правильно произносить, на тот случай если кто-то произносит "ява"), как и человеку, нужно понимать с чем она имеет дело. С каким типом данных предстоит работать.
Что для нас означает строгая типизация? Это значит, что все данные и каждое выражение имеет конкретный тип, который строго определен. А также то, что все операции по передаче данных будут проверяться на соответствие типов. Поэтому давайте поскорее узнаем какие типы данных представлены в Java!
Примитивы
В языке Java существует 8, оскорбленных сообществом, примитивных типов данных. Их также называют простыми. И вот какие они бывают:
Целые числа со знаком: byte , short , int , long ;
Числа с плавающей точкой: float , double ;
Логические значения: boolean .
В дальнейшем, комбинируя эти самые примитивы, мы сможем получать более сложные структуры. Но об этом нам еще рано беспокоиться. Сейчас же рассмотрим каждый из примитивов подробнее.
Тип byte
Тип short
16-разрядный тип данных в диапазоне от -2^15 до 2^15-1. Может хранить значения от -32768 до 32767. Самый редко применяемый тип данных.
Тип int
Наиболее часто употребляемый тип данных. Содержит 32 разряда и помещает числа в диапазоне от -2^31 до 2^31-1. Другими словами, может хранить значения от -2147483648 до 2147483647.
Тип long
64-разрядный целочисленный тип данных с диапазоном от -2^63 до 2^63-1. Может хранить значения от -9223372036854775808 до 9223372036854775807. Удобен при работе с большими целыми числами.
Используются при точных вычислениях, которые требуют результата с точностью до определенного знака после десятичной точки (вычисление квадратного корня, функции синуса или косинуса и прочего).
Тип float
32-разрядный тип данных с плавающей точкой. Требует в два раза меньше памяти и в некоторых процессорах выполняется быстрее, по сравнению с double. Но если значения слишком велики или слишком малы, то не обеспечивает требуемую точность вычислений. Используется когда нужно число с дробной частью, но без особой точности.
Тип double
На хранение требуется 64 бита. Рационально пользоваться double, когда нужно сохранить точность многократно повторяющихся вычислений или манипулировать большими числами.
Тип char
16-разрядный тип данных в диапазоне от 0 до 2^16. Хранит значения от 0 до 65536. Этот тип может хранить в себе полный набор международных символов на всех известных языках мира (кодировка Unicode). То есть, по сути, каждый символ представляет из себя какое-то число. А тип данных char позволяет понять, что это число является символом.
Тип boolean
Может принимать только 2 значения true или false. Употребляется в условных выражениях. К примеру 1 > 10 вернет false, а 1 < 10 - true.
На этом примитивные типы данных в Java закончились. В следующей статье мы будем объявлять переменные конкретного типа данных. Поговорим о том, что такое литералы. А еще узнаем, что такое приведение типов данных. Вообщем, следующая статья будет очень насыщенной и познавательной!
1- Обзор видов данных
Любой язык программирования имеет набор вида данных, виды данных являются базовыми, и они довольно похожи для всех языков. Все виды данных созданы из bit, поэтому я представляю отдельную статью про историю bit и byte. Мой совет вам прочитать ее перед тем, как продолжить с данной статьей.
- Примитивные виды данных (Primitive Data Types)
- Ссылочные виды данных (Reference Types)
Существует 8 видов примитивных данных(Primitive Data type) это: boolean, byte, char, short, int, long, float, double.
Вид данных | Значение по умолчанию | Размер |
---|---|---|
boolean | false | 1 bit |
char | '\u0000' | 2 byte |
byte | 0 | 1 byte |
short | 0 | 2 byte |
int | 0 | 4 byte |
long | 0L | 8 byte |
float | 0.0f | 4 byte |
double | 0.0d | 8 byte |
- Вид logic: boolean.
- Целочисленные виды (integer): byte, short, char, int, long.
- Виды реальных чисел (real number) (Так же называются плавающей запятой (floating point)): float, double.
Виды ссылок, это объекты созданные с помощью Constructor классов.
2- byte
1 byte это 8 bit расположенных последовательно друг с другом в памяти компьютера. Каждый bit это бинарное число 0 или 1. Java с названием "byte" для целочисленного вида (integer) с малым диапазоном (Размер 1 byte).
- Если это 0, Java считает его + (Представляет положительные числа)
- Если это 1, Java считает его - (Представляет отрицательные числа)
Почему наименьшее число вида byte в Java является -128?
Если по правилам первый bit имеет значение 0 эквивалентное знаку +, значение 1 эквивалентное знаку -, то у нас есть 2 способа для представления числа 0 (Смотрите изображение).
Поэтому двоиная последовательность "1 0 0 0 0 0 0" должна быть рассмотрена, как наименьшее число вида данных byte в Java, она представляет -128.
3- boolean
boolean является самым простым видом данных, имеет размер 1 bit. Имеет 2 значения это true и false.
Значение по умолчанию для вида boolean это false.
4- char
Несмотря на то, что "char" является 4 первыми символами слова "Character" (Символ), но вид char в Java используется для хранения целыъ неотрицательных чисел (Non-negative integers) с размером 2 byte. Он так же используется для представления одного символа Unicode, потому что каждый символ соответствует определенному числу (Данное число понимается как код символа).
Потому что char является целым неотрицательным числом, размер 2 byte, поэтому его диапазон это [0, 2*16-1] ( [0, 65535] ).
Когда char понимается как символ Unicode, наименьший символ является '\u0000' (Код 0), и наибольший символ является '\uffff' (Код 65535).
5- short
short это вид данных для представления целого числа 2 byte (16 bit), включая целое отрицательное число.
- Наименьшим значением является -32,768 (-2^15) и наибольшим значением является 32,767 (2^15 -1).
- Значением по умолчанию является 0.
** Примечание: Смотрите больше объяснение для определения положительного или отрицательного числа в части вида данных byte.
6- int
Вид данных int используется для представления целого числа с размером 4 byte (32 bit).
- Наименьшее значение: -2,147,483,648 (-2^31)
- Наибольшее значение: 2,147,483,647 (2^31 -1)
- Значение по умолчанию 0.
В Java, вид данных int считается видом значения пол умолчанию для целых чисел. Поэтому, если вы напишете число 100, Java создаст 4 byte регион в памяти для хранения. А если вы хотите, чтобы Java создал 8 byte регион памяти для хранения числа 100, вам нузно написать 100L. (long является целым числом вида 8 byte, представленный в нижней части).
7- long
Вид данных long используется для представления целых чисел с размером до 8 byte (64 bit).
- Наименьшее значение это -9,223,372,036,854,775,808.(-2^63)
- Наибольшее значение это 9,223,372,036,854,775,807. (2^63 -1)
- Данный вид используется когда нужен диапазон значений шире чем int.
- Значением по умолчанию является 0L.
Вид данных float используется для представления реальных чисел (real number) с размером 4 byte (32 bit).
- Наименьшее значение: -3.4028235 x 10^38
- Наибольшее значение: 3.4028235 x 10^38
- Значение по умолчанию 0.0f
9- double
Вид данных double используется для представления реальных чисел (real number) с размером 8 byte (64 bit). Это вид по умолчанию для вида реальных чисел.
- Наименьшее значение: -1.7976931348623157 x 10^308
- Наибольшее значение: 1.7976931348623157 x 10^308
- Значение по умолчанию 0.0d
10- Ссылочный вид (Reference Type)
В Java вид данных создается с помощью комбинации примитивных видов, которые называются ссылочным видом (Reference type). Наиболее распространенный ссылчный вид который используется это String, он является комбинацией символов.
Ссылочные виды созданы на основании класса. Класс (class) похож на план (blueprint) для определения ссылочного вида.
Читайте также: