Опубликовано пользователем goodigy
Примитивные типы в 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);
}
}