Шпаргалка по Java
Последнее обновление
Hello World и структура программы
Любая программа на Java запускается из метода main внутри класса.
| Элемент | Код |
|---|---|
| Объявление класса | public class Main { ... } |
| Точка входа | public static void main(String[] args) { ... } |
| Вывести строку | System.out.println("Hello, World!"); |
| Вывести без перевода строки | System.out.print("text"); |
| Считать ввод | Scanner sc = new Scanner(System.in); |
| Импортировать класс | import java.util.ArrayList; |
| Комментарии | // line и /* block */ |
Типы данных
Примитивы пишутся со строчной буквы; их классы-обёртки - с заглавной.
| Тип | Описание |
|---|---|
int | 32-битное знаковое целое |
long | 64-битное знаковое целое |
double / float | Числа с плавающей точкой |
boolean | true или false |
char | Один 16-битный символ Unicode |
byte / short | 8-битные / 16-битные целые |
String | Неизменяемый текст (класс, а не примитив) |
Integer, Double, Boolean | Классы-обёртки для примитивов |
var | Выводимый локальный тип (Java 10+) |
Переменные
| Операция | Синтаксис |
|---|---|
| Объявить и инициализировать | int x = 5; |
| Вывод типа (локальный) | var name = "Ada"; |
| Константа | final double PI = 3.14159; |
| Конкатенация строк | String s = "Hi " + name; |
| Преобразовать строку в int | int n = Integer.parseInt("42"); |
| Преобразовать int в строку | String s = String.valueOf(42); |
| Форматированная строка | String.format("%d items", n) |
Управление потоком
| Конструкция | Синтаксис |
|---|---|
| If / else | if (x > 0) { ... } else { ... } |
| Оператор switch | switch (n) { case 1: ...; break; default: ...; } |
| Switch-выражение | var s = switch (n) { case 1 -> "one"; default -> "other"; }; |
| Цикл while | while (i < n) { ... } |
| Цикл do-while | do { ... } while (i < n); |
| Цикл for | for (int i = 0; i < n; i++) { ... } |
| Расширенный for (for-each) | for (String item : list) { ... } |
| Break / continue | break; выходит из цикла, continue; переходит к следующей итерации |
Методы
| Операция | Синтаксис |
|---|---|
| Определить метод | int add(int a, int b) { return a + b; } |
| Без возвращаемого значения | void greet() { ... } |
| Статический метод | static int square(int x) { return x * x; } |
| Публичный метод | public String getName() { return name; } |
| Varargs (переменное число аргументов) | int sum(int... nums) { ... } |
| Вызвать метод | int r = add(2, 3); |
| Вызвать статический метод | Math.max(a, b); |
| Перегрузка метода | int max(int a, int b) и double max(double a, double b) |
Классы и ООП
| Операция | Синтаксис |
|---|---|
| Определить класс | public class Dog { ... } |
| Поле | private String name; |
| Конструктор | public Dog(String name) { this.name = name; } |
| Создать объект | Dog d = new Dog("Rex"); |
| Геттер / сеттер | public String getName() { return name; } |
| Наследование | class Puppy extends Dog { ... } |
| Интерфейс | interface Runnable { void run(); } |
| Реализовать интерфейс | class Task implements Runnable { ... } |
| Переопределить метод | @Override public void speak() { ... } |
Коллекции
Обобщённые коллекции из java.util.
| Тип | Применение и пример |
|---|---|
ArrayList<T> | Динамический массив: list.add(1); list.get(0); list.size(); |
HashMap<K, V> | Ключ-значение: map.put("a", 1); map.get("a"); |
HashSet<T> | Уникальные значения: set.add(5); set.contains(5); |
LinkedList<T> | Двусвязный список, удобен как очередь/дек |
ArrayDeque<T> | Стек/очередь: dq.push(x); dq.pop(); |
| Массив | int[] nums = {1, 2, 3}; |
| Обойти список | for (T x : list) { ... } |
| Обойти map | for (var e : map.entrySet()) { e.getKey(); e.getValue(); } |
Стримы и лямбды
Конвейеры в функциональном стиле над коллекциями (Java 8+).
| Операция | Синтаксис |
|---|---|
| Лямбда-выражение | x -> x * 2 |
| Создать стрим | list.stream() |
| Фильтрация | .filter(n -> n > 0) |
| Map / преобразование | .map(n -> n * 2) |
| Сортировка | .sorted() или .sorted(Comparator.reverseOrder()) |
| Свёртка / сумма | .reduce(0, Integer::sum) |
| Подсчёт / проверка | .count(), .anyMatch(n -> n > 5) |
| Собрать в список | .collect(Collectors.toList()) |
| Для каждого | .forEach(System.out::println) |
Частые паттерны (try/catch, дженерики)
| Паттерн | Синтаксис |
|---|---|
| Try / catch | try { ... } catch (Exception e) { ... } |
| Перехват конкретного исключения | catch (IOException e) { ... } |
| Finally | finally { ... } выполняется всегда |
| Try-with-resources | try (Scanner sc = new Scanner(...)) { ... } |
| Выбросить исключение | throw new IllegalArgumentException("bad"); |
| Обобщённый класс | class Box<T> { T value; } |
| Обобщённый метод | <T> T first(List<T> list) { ... } |
| Ограниченный тип | <T extends Number> |
Синтаксис Java, коллекции и операции со стримами, которые нужны чаще всего, на одной странице. Эта шпаргалка по Java - быстрый справочник для написания кода на Java: типы данных, управление потоком, классы, коллекции ArrayList/HashMap, Streams API, а также паттерны исключений и дженериков, которые вы используете каждый день.
Всё здесь - стандартная Java (Java 8 и новее), которая компилируется с помощью javac. Копируйте нужное или попробуйте любой фрагмент вживую в playground для Java - без установки JDK.
Часто задаваемые вопросы по шпаргалке Java
Эта шпаргалка по Java бесплатна?
В чём разница между == и .equals() в Java?
== сравнивает ссылки - указывают ли две переменные на один и тот же объект, - а .equals() сравнивает содержимое. Два разных объекта String с одинаковым текстом равны по .equals(), но могут быть не равны по ==. Всегда используйте .equals() для сравнения строк и других объектов по значению; используйте == только для примитивов (int, boolean и т. д.) или для проверки на null.Для чего нужны стримы в Java?
filter, map, sorted, reduce, collect - вместо ручных циклов. Вы начинаете с list.stream(), выстраиваете цепочку промежуточных операций и завершаете терминальной операцией вроде collect(Collectors.toList()) или forEach. Это делает код преобразования данных лаконичным и выразительным.