JAVA - Типы данных (элементарные, простые типы)

JAVA - Типы данных

Прежде всего следует сказать, что Java - это строго типизированный язык. Во многом - благодаря этому появляется возможность лучше контролировать процесс выполнения программы -
возрастает уровень безопасности.
Отсутствуют средства автоматического (неявного) приведения типов. Компилятор проверяет все выражения и параметры на соответствие типов.

ЭЛЕМЕНТАРНЫЕ ТИПЫ

В Java определены 8 элементарных типов данных:

  1. byte (8 бит - [-127, +128]) - наименьший по размеру целочисленный тип, полезен для работы с данными поступающими из сети или файла.
    Данный тип также хорош для манипуляции необработанными двоичными данными, которые не совместимы напрямую с другими типами данных.
  2. short (16 бит \\ -32768 до +32767)
  3. int (32 бита) - используется наиболее часто. В выражениях типы short и byte "повышаются" до int после чего происходят вычисления - так что иногда лучше сразу использовать int - чтобы избежать затрат на подобное неявное преобразование.
  4. long (64 бит) - целочисленный тип, который используют тогда, когда диапазона int недостаточно
  5. char (16 бит \\ от 0 до 65536) - "целочисленный" тип и используется для хранения символов в 2 байта каждый (Unicode - десятки символов разных азбук и цифр) - отрицательных значений данного типа не определено. Приведём небольшой примерчик - дабы показать как данные интерпретируются например в потоке стандартного вывода:
    char mysymb = 88;
    System.out.println(mysymb ); // выведет букву "X"
    // Также можно инкрементировать переменные данного типа:
    mysymb++; // увеличиваем значение на единицу
    System.out.println(mysymb); // выведет букву "Y"
  6. float (32 бита) - числа с десятичной частью - в ряде процессов обрабатываются быстрее, чем числа с повышенной точною - но этой самой точности как раз таки иногда не хватает
  7. double (64 бита) - числа с десятичной частью (повышенная - "двойная" точность) - например sin, cos и sqrt возвращают именно значения этого типа.
  8. boolean - "логический" тип данных. Присваиваются значения типа true или false - то есть всего два возможных

Элементарные типы также называются простыми. Все простые типы можно разделить на 4-ре группы:

  1. Целые числа: byte, short, int, long - представляют собой числа со знаком.
  2. Числа с плавающей точкой - эта группа включает себе float и double - эти типы хранят числа с точностью до определённого знака после запятой
  3. Символы - в эту группу входит типа char
  4. Булевы значения -boolean - хранит значения типа "истина/ложь"

Элементарные типы представляют собой одиночные значения и объектами не являются - это важно для производительности.
Их диапазон значений явно задан и они имеют математически строгое поведение.

Диапазоны простых типов в java не зависят от платформы - что тоже, в каком-то смысле, удобно.

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

Вообще, "литерал" (буква) - то есть некоторый символ - служит для обозначения в программе разных объектов - в том числе с помощью символов или их комбинаций обозначаются целые числа:

int x = 10; 

"10" - в данном случае будет являться целочисленным литералом, который обозначает число "десять".

Рассмотрим подробнее - какие возможности есть для указания целочисленных литералов в коде программы на Java:

  1. Для того чтобы указать восьмеричную систему литерал начинают с нуля:
    int x = 07;  //число 7 в восьмеричной системе )

    кстати, вот такая вот запись вызовет ошибку:

    // так нельзя т.к. 9 не исполь. в 8-мирич. системе.
    int x = 09; 
  2. Шестнадцатеричные данные записывают начиная с обязательной последовательности "0x" , например:
     long x = 0xFF234AF5345FF; 
  3. В JDK7 появилась возможность в явном виде вводить двоичные данные ,начиная со спец. комбинации "0b":
    int x = 0b1000; // =8 в десятичной =))
  4. Также в JDK 7 уже можно делать числа большие числа визуально более понятными, для коллег-программистов, которые будут работать с вашим, кодом - для чего разрешено использовать нижнее подчеркивание:
    int x = 345_567_765;

    или даже двойные подчёркивания:

    int x = 500__000__001;

    также подчёркивания полезны когда мы вводим числа в двоичной форме - ведь там легко сбиться в разрядах:

    int x =  0b1000_1100_1010;

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

По умолчанию литералы с "плавающей точкой" имеют тип double - чтобы в памяти для них был использован формат float число должно начинаться с английской буквы f (или F).

Допустимо использование нижних подчёркиваний:

double m = 123_456_456.123_34

Булевы литералы (истина/ложь)

Как написано выше - значения всего два - true false

boolean b = true; 
boolean a = false; 

Но следует помнить, что эти значения в Яве не эквивалентны единице и нулю!

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

Символы вводятся по одному - в одинарных кавычках:

char ch = 'a'; 
char ch = '\141'; // эквивалентно предыдущему 
char ch = '\n'; // символ переноса строки

как показано в последнем примере - если символ явно в ковычках ввести не получается, то можно ввести комбинацию из обратного слэша (обратной косой черты) из его номера в таблице ASCII:

char ch = '\141'; // = 'a'; 

Чтобы ввести букву пользуясь её шестандцатеричным кодом - используют, опять же - обратный слэш и английскую букву "уууу":

char = '\u0061'; // = 'a'

Строковые литералы

Строковые литералы - здесь у нас имеет место быть строка в двойных кавычках:

String str = "qwerewsdafgdsg";

если же требует напечатать двойные кавычки - то их экранируют обратным слэшем:
(кстати - обратите внимание - что в приведённом примере мы используем тип String - строковый, который не является элементарным - и пишется именно с большой буквы )

String str = " \"  Эта строка будет напечатана в кавычках ! =)  \" "; 

Управляющие символы и "остальные плюшки" работают точно также как и в строковых литералах (только тут вы можем вводить символы и управляющие символы вперемежку)

Что дальше

Мы уже пару раз использовали переменные - так и не сказав о их объявлении - так давайте скажем, и затем продолжим изучение Явы =)