Типы в Java

Примитивные типы в Java

Язык Java является строго типизированным языком. Тип каждой переменной должен быть обязательно объявлен.
В языке Java существует 8 примитивных типов.
Четыре типа для целых чисел, два для чисел с плавающей точкой, один для символов и boolean.

ТипЗанимаемый объем памятиДопустимые значения
byte8 бит – 1 байт-128 +127
short16 бит – 2 байта-32 768 +32 767
int32 бита – 4 байта-231 +231-1 (-2 147 483 648 +2 147 483 647)
long64 бит – 8 байт-263 +263-1(- 9 223 372 036 854 775 808 +9 223 372 036 854 775 807)
float32 бита – 4 байтаПриблизительно ±3,40282347E+38F (6-7 значащих десятичных цифр)
double64 бит – 8 байтПриблизительно ±1,7976931348623157E+308F (15 значащих десятичных цифр)
char16 бит – 2 байта0(\u0000) 65 535(\uffff) Символы Unicode(UTF-16)
booleantrue false
  • Длинные целые числа обозначаются суффиксом L - 100000000L ;
  • Шестнадцатеричные с префиксом 0x – 0xFFFF ;
  • Восьмеричные с префиксом 0 – 010 ;
  • Двоичные с префиксом 0b или 0B – 0b1010 ;(c Java 7)
  • С Java 7 для удобства числовые литералы можно разделять знаками подчеркивания – 1_000_000_000.
  • Числовые значения типа float указываются в суффиксом F – 1.15F ;
  • Double с суффиксом D – 1.15D ;
  • Если суффикс не указан принимается double.

Переменные обязательно нужно инициализировать до их использования.

Приведение типов может сопровождаться потерей данных.
Если привести число double к int , то в int запишется целая часть, а дробная просто отбрасывается.

    Double x = 1.45;
    Int y = (int) x;

В y будет записана 1 ;

Если требуется округлить до целого, то можно воспользоваться метами класса Math

    Math.round(x);
    Math.ceil(x);

Все остальные типы являются ссылочными.

Тип String

Строки в Java это объекты. Строки неизменяемые, то есть один раз созданная строка неизменна на протяжении работы программы.
По сути, строка это массив символов char[]. В классе String строка хранится в виде массива.
При каждой конкатенации или изменении строки происходит создание новой строки.

Создать строку можно

    String str1 = "Строка";
    String str2 = new String("Строка");
    char[] arr = { 'C', 'т', 'р', 'о', 'к', 'а'};
    String str3 = new String(arr);

Сравнивать строки нужно по equals.

    "Строка".equals(str1);
    str1.equals(str2);

Boxing/Unboxing

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

ТипОбертка
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

Оборачивание - boxing.
Распаковка - unboxing.

Для того чтобы обернуть примитивный тип

    int g = 1;
    Integer bg1 = new Integer(g);
    Integer bg2 = Integer.valueOf(g);

Также с java 5 происходит автоупаковка.

    Integer bg3 = g;

Массивы

Массивы являются объектами.

Массив — это контейнер который содержит фиксированное количество элементов одного типа.

Длина массива задается при создании.Каждый элемент массива имеет индекс. Индексация элементов начинается с 0.

Объявление массива

    int[] array;
    int array1[];

Выделение памяти на 10 int-ов

    array = new int[10];

Добавление элементов и обращение к элементам по индексу

    array[0] = 1;

Существует короткий синтаксис создания и инициализации массивов.

    int[] array2 = {1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10};

Нужные для работы с массивами методы находятся в классе Arrays.
Например, метод toString() у массивов не определен, чтобы распечатать массив в консоль Arrays.toString(array);

Значения по умолчанию, которыми инициализируются поля

ТипЗначение по умолчанию(для полей)
byte0
short0
int0
long0L
float0.0f
double0.0d
char“\u0000”
String или любой объектnull
Booleanfalse

Пример

    import java.util.Arrays;
    
    public class Types {
        public static void main(String[] args) {
            double d1 = 1.45;
            double d2 = 0.145e2;
            float  f1  = 1.45f;
    
            byte b = 100;
            short s = 10000;
            int di = 26;
            int hexi = 0xffff;
            int bini = 0b1010;
            long creditCardNumber = 1234_5678_9012_3456L;
    
            boolean bool = true;
            char ch = 'C';
    
            double x = 1.45;
            int y = (int)x;
    
            System.out.println(Math.round(x));
            System.out.println(Math.ceil(x));
            System.out.println(y);
    
            int g = 1;
            Integer bg1 = new Integer(g);
            Integer bg2 = Integer.valueOf(g);
            Integer bg3 = g;
    
            String str1 = "Строка";
            String str2 = new String("Строка");
            char[] arr = { 'C', 'т', 'р', 'о', 'к', 'а'};
            String str3 = new String(arr);
            "Строка".equals(str1);
            str1.equals(str2);
    
            int[] array;
            int array1[];
            array = new int[10];
            array[0] = 1;
            int[] array2 = {1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10};
            Arrays.toString(array);
            Arrays.sort(array);
    
    
        }
    }