Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

типы данных Java

Лекция



Привет, сегодня поговорим про типы данных java, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое типы данных java , настоятельно рекомендую прочитать все из категории Объектно-ориентированное программирование ООП.

Константы

В языке Java можно записывать константы разных типов в разных видах. Перечислим их.

  Целые

Целые константы можно записывать в трех системах счисления:

  • в десятичной форме: +5, -7, 12345678;
  • в восьмеричной форме, начиная с нуля: 027, -0326, 0777; в записи таких констант недопустимы цифры 8 и 9;

Замечание

Число, начинающееся с нуля, записано в восьмеричной форме, а не в десятичной.

  • в шестнадцатеричной форме, начиная с нуля и латинской буквы х или X: 0xff0a, 0xFC2D, 0x45a8, 0X77FF; здесь строчные и прописные буквы не различаются.

Целые константы хранятся в формате типа int (см. ниже).

В конце целой константы можно записать букву прописную L или строчную l, тогда константа будет сохраняться в длинном формате типа long (см. ниже): +25L, -0371, OxffL, OXDFDF1.

Совет

Не используйте при записи длинных целых констант строчную латинскую букву l, ее легко спутать с единицей.

  Действительные

Действительные константы записываются только в десятичной системе счисления в двух формах:

  • c фиксированной точкой: 37.25, -128.678967, +27.035;
  • с плавающей точкой: 2.5е34, -0.345е-25, 37.2Е+4; можно писать строчную или прописную латинскую букву Е; пробелы и скобки недопустимы.

В конце действительной константы можно поставить букву F или f, тогда константа будет сохраняться в формате типа float (см. ниже): 3.5f, -45.67F, 4.7e-5f. Можно приписать и букву D (или d): 0.045D, -456.77889d, означающую тип double, но это излишне, поскольку действительные константы и так хранятся в формате типа double.

  Символы

Для записи одиночных символов используются следующие формы.

  • Печатные символы можно записать в апострофах: 'а', 'N', '?'.
  • Управляющие символы записываются в апострофах с обратной наклонной чертой:
    • '\n' — символ перевода строки newline с кодом ASCII 10;
    • '\r' — символ возврата каретки CR с кодом 13;
    • '\f' — символ перевода страницы FF с кодом 12;
    • '\b' — символ возврата на шаг BS с кодом 8;
    • '\t' — символ горизонтальной табуляции НТ с кодом 9;
    • '\\' — обратная наклонная черта;
    • '\"' — кавычка;
    • '\'' — апостроф.
  • Код любого символа с десятичной кодировкой от 0 до 255 можно задать, записав его не более чем тремя цифрами в восьмеричной системе счисления в апострофах после обратной наклонной черты: '\123' — буква S, '\346' — буква Ж в кодировке СР1251. Не рекомендуется использовать эту форму записи для печатных и управляющих символов, перечисленных в предыдущем пункте, поскольку компилятор сразу же переведет восьмеричную запись в указанную выше форму. Наибольший код '\377' — десятичное число 255.
  • Код любого символа в кодировке Unicode набирается в апострофах после обратной наклонной черты и латинской буквы ц ровно четырьмя шестнад-цатеричными цифрами: '\u0053' — буква S, '\u0416' — буква Ж.

Символы хранятся в формате типа char (см. ниже).

Примечание

Прописные русские буквы в кодировке Unicode занимают диапазон от '\u0410' — заглавная буква А, до '\u042F' — заглавная Я, строчные буквы от '\u0430' — а, до '\044F' — я.

В какой бы форме ни записывались символы, компилятор переводит их в Unicode, включая и исходный текст программы.

Замечание

Компилятор и исполняющая система Java работают только с кодировкой Unicode.

  Строки

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

Вот некоторые примеры:

"Это строка\nс переносом"

"\"Спартак\" — Чемпион!"

Замечание

Строки символов нельзя начинать на одной строке исходного кода, а заканчивать на другой.

Для строковых констант определена операция сцеплений, обозначаемая плюсом.

"Сцепление " + "строк" дает в результате строку "Сцепление строк".

Чтобы записать длинную строку в виде одной строковой константы, надо после закрывающей кавычки на первой и следующих строках поставить плюс +; тогда компилятор соберет две (или более) строки в одну строковую константу, например:

"Одна строковая константа, записанная "+ 

"на двух строках исходного текста"

Тот, кто попытается выводить символы в кодировке Unicode, например, слово "Россия":

System.out.println("\u0429\u043e\u0441\u0441\u0438\u044f");

должен знать, что Windows 95/98/ME вообще не работает с Unicode, a Windows NT/2000 использует для вывода в окно Command Prompt шрифт Terminal, в котором русские буквы, расположены в начальных кодах Unicode, почему-то в кодировке СР866, и разбросаны по другим сегментам Unicode.

Не все шрифты Unicode содержат начертания (glyphs) всех символов, поэтому будьте осторожны при выводе строк в кодировке Unicode.

Совет

Используйте Unicode напрямую только в крайних случаях.

Имена

Имена (names) переменных, классов, методов и других объектов могут быть простыми (общее название —идентификаторы (idenifiers)) и составными (qualified names). Об этом говорит сайт https://intellect.icu . Идентификаторы в Java составляются из так называемых букв Java (Java letters) и арабских цифр 0—9, причем первым символом идентификатора не может быть цифра. (Действительно, как понять запись 2е3: как число 2000,0 или как имя переменной?) В число букв Java обязательно входят прописные и строчные латинские буквы, знак доллара $ и знак 'подчеркивания _, а так же символы национальных алфавитов.

Замечание

Не указывайте в именах знак доллара. Компилятор Java использует его для записи имен вложенных классов.

Вот примеры правильных идентификаторов:

a1      my_var    var3_5   _var    veryLongVarName 

aName   theName   a2Vh36kBnMt456dX

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

Не забывайте о рекомендациях "Code Conventions".

В классе Character, входящем в состав Java API, есть два метода, проверяющие, пригоден ли данный символ для использования в идентификаторе: isJavaidentifierStarto, проверяющий, является ли символ буквой Java, и isJavaldentifierPart(),  выясняющий, является ли символ - буквой или цифрой.

Служебные слова Java, такие как classvoidstatic, зарезервированы, их нельзя использовать в качестве идентификаторов своих объектов.

Составное имя (qualified name) — это несколько идентификаторов, разделенных точками, без пробелов, например, уже встречавшееся нам имя System.out.println.

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

Все типы исходных данных, встроенные в язык Java, делятся на две группы: примитивные типы (primitive types) и ссылочные типы (reference types).

Ссылочные типы делятся на массивы (arrays), массы (classes) и интерфейсы (interfaces).

Примитивных типов всего восемь. Их можно разделить на логический (иногда говорят булев) тип boolean ичисловые (numeric).

К числовым типам относятся целые (integral [Название "integral" не является устоявшимся термином. Так названа категория целых типов данных в книге The Java Language Specification, Second Edition. James Gosling, Bill Joy, Guy Steele, Gilad Bracha (см. введение). — Ред.]) и вещественные (floating-point) типы.

Целых типов пять: byteshortintlongchar.

Символы можно использовать везде, где используется тип int, поэтому JLS причисляет их к целым типам. Например, их можно использовать в арифметических вычислениях, скажем, можно написать 2 + 'ж', к двойке будет прибавляться кодировка Unicode '\u04i6' буквы 'ж'. В десятичной форме это число 1046 и в результате сложения получим 1048.

Напомним, что в записи 2 + "Ж" плюс понимается как сцепление строк, двойка будет преобразована в строку, в результате получится строка "2ж".

Вещественных типов два: float и double.

На рис. 1.2 показана иерархия типов данных Java.

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

Замечание для специалистов

Java — язык со строгой типизацией (strongly typed language).

Разберем каждый тип подробнее.

 типы данных Java

Рис. 1.2. Типы данных языка Java

Логический тип

Значения логического типа boolean возникают в результате различных сравнений, вроде 2 > з, и используются, главным образом, в условных операторах и операторах циклов. Логических значении всего два: true (истина) и false (ложь). Это служебные слова Java. Описание переменных этого типа выглядит так:

boolean b = true, bb = false, bool2;

Над логическими данными можно выполнять операции присваивания, например, bool2 = true, в том числе и составные с логическими операциями; сравнение на равенство b == bb и на неравенство b != bb, а также логические операции.

Логические операции

Логические операции:

  • отрицание (NOT) ! (обозначается восклицательным знаком); 
  • конъюнкция (AND) & (амперсанд);
  • дизъюнкция (OR) | (вертикальная черта); 
  • исключающее ИЛИ (XOR) ^ (каре).

Они выполняются над логическими данными, их результатом будет тоже логическое значение true илиfalse. Про них можно ничего не знать, кроме того, что представлено в табл. 1.1.

Таблица 1.1. Логические операции

b1
b2
!b1
b1&b2
b1|b2
b1^b2
true
true
false
true
true
false
true
false
false
false
true
true
false
true
true
false
true
true
false
false
true
false
false
false

Словами эти правила можно выразить так: 

  • отрицание меняет значение истинности; 
  • конъюнкция истинна, только если оба операнда истинны; 
  • дизъюнкция ложна, только если оба операнда ложны; 
  • исключающее ИЛИ истинно, только если значения операндов различны.

Замечание

Если бы Шекспир был программистом, фразу "То be or not to be" он написал бы так: 2b | ! 2b. 

Кроме перечисленных четырех логических операций есть еще две логические операции сокращенного вычисления:

  • сокращенная конъюнкция (conditional-AND) &&
  • сокращенная дизъюнкция (conditional-OR) ||.

Удвоенные знаки амперсанда и вертикальной черты следует записывать без пробелов.

Правый операнд сокращенных операций вычисляется только в том случае, если от него зависит результат операции, т. е. если левый операнд конъюнкции имеет значение true, или левый операнд дизъюнкции имеет значение false.

Это правило очень удобно и ловко используется, например, можно записывать выражения (n != 0) && (m/n > 0.001) или (n == 0) || (m/n > 0.001) не опасаясь деления на нуль.

Замечание

Практически всегда в Java используются именно сокращенные логические операции.

Целые типы

Спецификация языка Java, JLS, определяет разрядность (количество байтов, выделяемых для хранения значений типа в оперативной памяти) и диапазон значений каждого типа. Для целых типов они приведены в табл. 1.2.

Таблица 1.2. Целые типы

Тип
Разрядность (байт)

  Диапазон

byte
1
от -128 до 127
short
2
от -32768 до 32767
int
4
от -2147483648 до 2147483647
long
8
от -9223372036854775808 до 9223372036854775807
char
2
от '\u0000' до '\uFFFF' , в десятичной форме от 0 до 65535

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

Хотя тип char занимает два байта, в арифметических вычислениях он участвует как тип int, ему выделяется 4 байта, два старших байта заполняются нулями.

Примеры определения переменных целых типов:

byte b1 = 50, b2 = -99, bЗ;

short det = 0, ind = 1;

int i = -100, j = 100, k = 9999;

long big = 50, veryBig = 2147483648L;

char c1 = 'A', c2 = '?', newLine = '\n';

Целые типы хранятся в двоичном виде с дополнительным кодом. Последнее означает, что для отрицательных чисел хранится не их двоичное представление, а дополнительный код этого двоичного представления.

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

Например, значение 50 переменной b1, определенной выше, будет храниться в одном байте с содержимым00110010, а значение -99 переменной b2 — в байте с содержимым, которое вычисляем так: число 99переводим в двоичную форму, получая 01100011, меняем единицы и нули, получая 10011100, и прибавляем единицу, получив окончательно байт с содержимым 10011101.

Смысл всех этих сложностей в том, что сложение числа с его дополнительным кодом в двоичной арифметике даст в результате нуль, старший бит просто теряется. Это означает, что в такой странной арифметике дополнительный код числа является противоположным к нему числом, числом с обратным знаком. А это, в свою очередь, означает, что вместо того, чтобы вычесть из числа А число В, можно к А прибавить дополнительный код числа В. Таким 'образом, операция вычитания исключается из набора машинных операций.

Над целыми типами можно производить массу операций. Их набор восходит к языку С, он оказался удобным и кочует из языка в язык почти без изменений. Особенности применения этих операций в языке Java показаны на примерах.

К сожалению, в одной статье не просто дать все знания про типы данных java. Но я - старался. Если ты проявишь интерес к раскрытию подробностей,я обязательно напишу продолжение! Надеюсь, что теперь ты понял что такое типы данных java и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Объектно-ориентированное программирование ООП

создано: 2014-10-09
обновлено: 2024-11-14
340



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Объектно-ориентированное программирование ООП

Термины: Объектно-ориентированное программирование ООП