Типы данных Java

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

byte — 8 бит | -128 .. 127

short — 16 бит | -32 768 .. 32 767

int — 32 бит | -2 147 483 648 .. 2 147 483 647

long — 64 бит | ~±9.2 × 10^18

float — 32 бит | дробные, суффикс f

double — 64 бит | дробные точнее

booleantrue / false

char — 16 бит | один символ Unicode


Объявление переменных

int a = 10;
long b = 100L;        // суффикс L
float c = 3.14f;      // суффикс f
double d = 3.14;
boolean flag = true;
char ch = 'A';

Ключевые слова

// Неизменяемая переменная
final int MAX = 100;

// Вывод типа (Java 10+)
var x = 42;           // int
var s = "hello";      // String

Ссылочные типы

String s = "hello";
int[] arr = {1, 2, 3};
Integer boxed = 42;   // обёртка над int

Отличие от примитивов:
- Хранят ссылку, а не значение
- Могут быть null
- Методы есть (.length(), .equals() и др.)


Обёртки (Wrapper)

Autoboxing / Unboxing

Integer x = 5;     // autoboxing (int → Integer)
int y = x;          // unboxing  (Integer → int)

// Осторожно с null!
Integer n = null;
int z = n;          // NullPointerException!

Приведение типов (casting)

Неявное (расширение — безопасно)

int i = 10;
long l = i;    // OK
double d = i;  // OK

Явное (сужение — потеря данных)

double d = 9.99;
int i = (int) d;   // i = 9 (отбрасывает дробь)

long l = 300L;
byte b = (byte) l; // может переполниться!

String

String s = "Java";

s.length()          // 4
s.charAt(0)         // 'J'
s.toUpperCase()     // "JAVA"
s.toLowerCase()     // "java"
s.contains("av")    // true
s.substring(1, 3)   // "av"
s.replace("J","j")  // "java"
s.trim()            // убрать пробелы по краям
s.equals("Java")    // true  (не ==!)
s.isEmpty()         // false
s.split(",")        // массив строк

Конкатенация

String a = "Hi" + " " + "there"; // "Hi there"
String b = "Val: " + 42;          // "Val: 42"

// StringBuilder — для циклов (эффективнее)
StringBuilder sb = new StringBuilder();
sb.append("Hi");
sb.append(" ");
sb.append("there");
String result = sb.toString();     // "Hi there"

Массивы

// Объявление
int[] arr = new int[5];       // {0,0,0,0,0}
int[] arr = {10, 20, 30};

// Доступ
arr[0] = 99;
int x = arr[2];               // 30

// Длина
arr.length                    // 3 (не метод!)

// 2D массив
int[][] matrix = new int[3][3];
matrix[0][0] = 1;

Сравнение значений

// Примитивы — через ==
int a = 5;
int b = 5;
a == b   // true

// Объекты — через .equals()
String s1 = "hi";
String s2 = "hi";
s1.equals(s2)  // true
s1 == s2       // может быть false (ссылки!)
← Меню