Типы в Java

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

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

Тип Занимаемый объем памяти Допустимые значения
byte 8 бит – 1 байт -128 +127
short 16 бит – 2 байта -32 768 +32 767
int 32 бита – 4 байта -231 +231-1 (-2 147 483 648 +2 147 483 647)
long 64 бит – 8 байт -263 +263-1(- 9 223 372 036 854 775 808 +9 223 372 036 854 775 807)
float 32 бита – 4 байта Приблизительно ±3,40282347E+38F (6-7 значащих десятичных цифр)
double 64 бит – 8 байт Приблизительно ±1,7976931348623157E+308F (15 значащих десятичных цифр)
char 16 бит – 2 байта 0(\u0000) 65 535(\uffff) Символы Unicode(UTF-16)
boolean   true 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

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

Тип Обертка
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

Оборачивание - 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);

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

Тип Значение по умолчанию(для полей)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char "\u0000"
String или любой объект null
Boolean false

Пример

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);


    }
}

 

E-mail для связи: goodigy@goodigy.ru