Java Cheatsheet
Hello.java
Эта шпаргалка представляет собой краш-курс для начинающих программистов на Java и помогает рассмотреть основной синтаксис языка Java.
``java public class Hello { // метод main public static void main(String[] args) { // Выходные данные: Hello, world! System.out.println(“Hello, world!”); } }
Компиляция и запуск
````shell скрипт
$ javac Hello.java
$ java Hello
Привет, мир!
Переменные
``java int num = 5; float floatNum = 5.99f; char letter = ‘D’; boolean bool = true; String site = “cheatsheets.zip”;
### Примитивные типы данных {.row-span-2}
| Тип данных | Размер | По умолчанию | Диапазон |.
|-----------|--------|---------|---------------------|
| `byte` | 1 байт | 0 | -128 ^to^ 127 |
| `short` | 2 байта | 0 | -2^15^to^ 2^15^-1 |
| `int` | 4 байта | 0 | -2^31^to^ 2^31^-1 |
| `long` | 8 байт | 0 | -2^63^^to^ 2^63^-1 |
| `float` | 4 байта | 0.0f | _N/A_ |
| `double` | 8 байт | 0.0d | _N/A_ |
| `char` | 2 байта | 0 ^to^ 65535 |
| `boolean` | _N/A_ | false | true / false |
{.show-header}
### Строки
``java
String first = "John"
String last = "Doe";
String name = first + " " + last;
System.out.println(name);
Смотрите: [Strings](#java strings)
Циклы
String word = "Шпаргалки";
for (char c: word.toCharArray()) {
System.out.print(c + "-");
}
// Выходные данные: c-h-e-a-t-S-h-e-t-s-.
```
Смотрите: [Loops](#java-loops)
### Массивы
````java
char[] chars = new char[10];
chars[0] = 'a'
chars[1] = 'b'
String[] letters = {'A', 'B', 'C'};
int[] mylist = {100, 200};
boolean[] answers = {true, false};
```
Смотрите: [Массивы](#java массивы)
### Swap
````java
int a = 1;
int b = 2;
System.out.println(a + " " + b); // 1 2
int temp = a;
a = b;
b = temp;
System.out.println(a + " " + b); // 2 1
```
### Кастинг типов
``java
// Расширение
// byte<short<int<long<float<double
int i = 10;
long l = i; // 10
// Сужение
double d = 10.02;
long l = (long)d; // 10
String.valueOf(10); // "10"
Integer.parseInt("10"); // 10
Double.parseDouble("10"); // 10.0
```
### Conditionals
````java
int j = 10;
if (j == 10) {
System.out.println("Меня печатают");
} else if (j > 10) {
System.out.println("Меня не печатают");
} else {
System.out.println("Я тоже не печатаюсь");
}
```
Смотрите: [Conditionals](#java-conditionals)
### Пользовательский ввод
``java
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(str);
int num = in.nextInt();
System.out.println(num);
```
Строки Java
-------
### Базовый
````java
String str1 = "value";
String str2 = new String("value");
String str3 = String.valueOf(123);
```
### Конкатенация
````java
String s = 3 + "str" + 3; // 3str3
String s = 3 + 3 + "str"; // 6str
String s = "3" + 3 + "str"; // 33str
String s = "3" + "3" + "23"; // 3323
String s = "" + 3 + 3 + "23"; // 3323
String s = 3 + 3 + 23; // 29
```
### StringBuilder {.row-span-3}
StringBuilder sb = new StringBuilder(10);
``java
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| | | | | | | | | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
```
sb.append("QuickRef");
```java
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| Q | u | i | c | k | R | e | f | f
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
```
sb.delete(5, 9);
``java
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| Q | u | i | c | k | | | | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
```
sb.insert(0, "My ");
``java
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| M | y | Q | u | i | c | k |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
```
sb.append("!");
``java
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| M | y | Q | u | i | c | k | ! |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
```
### Сравнение
````java
String s1 = new String("QuickRef");
String s2 = new String("QuickRef");
s1 == s2 // false
s1.equals(s2) // true
"AB".equalsIgnoreCase("ab") // true
```
### Манипуляция
````java
String str = "Abcd";
str.toUpperCase(); // ABCD
str.toLowerCase(); // abcd
str.concat("#"); // Abcd#
str.replace("b", "-"); // A-cd
" abc ".trim(); // abc
"ab".toCharArray(); // {'a', 'b'}
```
### Информация
```java
String str = "abcd";
str.charAt(2); // c
str.indexOf("a") // 0
str.indexOf("z") // -1
str.length(); // 4
str.toString(); // abcd
str.substring(2); // cd
str.substring(2,3); // c
str.contains("c"); // true
str.endsWith("d"); // true
str.startsWith("a"); // true
str.isEmpty(); // false
```
### Неизменяемый
````java
String str = "hello";
str.concat("world");
// Выходные данные: hello
System.out.println(str);
```
---
````java
String str = "hello";
String concat = str.concat("world");
// Выходные данные: helloworld
System.out.println(concat);
```
Созданный однажды String не может быть изменен, любая модификация создает новый String
Массивы Java
-------
### Объявление
``java
int[] a1;
int[] a2 = {1, 2, 3};
int[] a3 = new int[]{1, 2, 3};
int[] a4 = new int[3];
a4[0] = 1;
a4[2] = 2;
a4[3] = 3;
```
### Модификация
``java
int[] a = {1, 2, 3};
System.out.println(a[0]); // 1
a[0] = 9;
System.out.println(a[0]); // 9
System.out.println(a.length); // 3
```
### Цикл (чтение и изменение)
``java
int[] arr = {1, 2, 3};
for (int i=0; i < arr.length; i++) {
arr[i] = arr[i] * 2;
System.out.print(arr[i] + " ");
}
// Выходные данные: 2 4 6
```
### Цикл (чтение)
``java
String[] arr = {"a", "b", "c"};
for (int a: arr) {
System.out.print(a + " ");
}
// Выходные данные: a b c
```
### Многомерные массивы
``java
int[][] matrix = { {1, 2, 3}, {4, 5} };
int x = matrix[1][0]; // 4
// [[1, 2, 3], [4, 5]]
Arrays.deepToString(matrix)
for (int i = 0; i < a.length; ++i) {
for (int j = 0; j < a[i].length; ++j) {
System.out.println(a[i][j]);
}
}
// Выходные данные: 1 2 3 4 5 6 7
```
### Сортировка
``java
char[] chars = {'b', 'a', 'c'};
Arrays.sort(chars);
// [a, b, c]
Arrays.toString(chars);
```
Java Conditionals
-----------
### Операторы {.row-span-2}
- <a href="javascript:void(0);" data-tooltip="Оператор сложения (также используется для конкатенации строк)">+</a>
- <a href="javascript:void(0);" data-tooltip="Оператор вычитания">-</a>
- <a href="javascript:void(0);" data-tooltip="Оператор умножения">*</a>
- <a href="javascript:void(0);" data-tooltip="Оператор деления">/</a>
- <a href="javascript:void(0);" data-tooltip="Оператор остатка">%</a>
- <a href="javascript:void(0);" data-tooltip="Простой оператор присваивания">=</a>
- <a href="javascript:void(0);" data-tooltip="Оператор инкремента; увеличивает значение на 1">++</a>
- <a href="javascript:void(0);" data-tooltip="Оператор Decrement; уменьшает значение на 1">--</a>
- <a href="javascript:void(0);" data-tooltip="Оператор логического дополнения; инвертирует значение булевой величины">!</a>
{.marker-none .cols-4}
----
- <a href="javascript:void(0);" data-tooltip="Равносильно">==</a>
- <a href="javascript:void(0);" data-tooltip="Не равно">!=</a>
- <a href="javascript:void(0);" data-tooltip="Больше, чем">></a>
- <a href="javascript:void(0);" data-tooltip="Больше или равно">>=</a>
- <a href="javascript:void(0);" data-tooltip="Меньше, чем"><</a>
- <a href="javascript:void(0);" data-tooltip="Меньше или равно"><=</a>
{.marker-none .cols-4}
----
- <a href="javascript:void(0);" data-tooltip="Conditional-AND">&&</a>
- <a href="javascript:void(0);" data-tooltip="Conditional-OR">||</a>
- [?:](#ternary-operator){data-tooltip="Тернарный (сокращение для оператора if-then-else)"}
{.marker-none .cols-4}
----
- <a href="javascript:void(0);" data-tooltip="Сравнивает объект с заданным типом">instanceof</a>
{.marker-none}
----
- <a href="javascript:void(0);" data-tooltip="Унарное побитовое дополнение">~</a>
- <a href="javascript:void(0);" data-tooltip="Подписанный сдвиг влево"><<</a>
- <a href="javascript:void(0);" data-tooltip="Знаковый сдвиг вправо">>></a>
- <a href="javascript:void(0);" data-tooltip="Беззнаковый сдвиг вправо">>>></a>
- <a href="javascript:void(0);" data-tooltip="Побитовое И">&</a>
- <a href="javascript:void(0);" data-tooltip="Побитовое исключающее ИЛИ">^</a>
- <a href="javascript:void(0);" data-tooltip="Побитовое исключающее ИЛИ">|</a>
{.marker-none .cols-4}
### If else
``java
int k = 15;
if (k > 20) {
System.out.println(1);
} else if (k > 10) {
System.out.println(2);
} else {
System.out.println(3);
}
```
### Переключатель {.row-span-2}
``java
int month = 3;
String str;
switch (month) {
case 1:
str = "Январь";
break;
case 2:
str = "февраль";
break;
case 3:
str = "Март";
break;
default:
str = "Какой-то другой месяц";
break;
}
// Выходные данные: Результат Март
System.out.println("Результат " + str);
```
### Тернарный оператор
```java
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
// Выходные данные: 20
System.out.println(max);
```
Циклы Java
----
##### Цикл For Loop
``java
for (int i = 0; i < 10; i++) {
System.out.print(i);
}
// Выходные данные: 0123456789
```
------
``java
for (int i = 0,j = 0; i < 3; i++,j--) {
System.out.print(j + "|" + i + " ");
}
// Выходные данные: 0|0 -1|1 -2|2
```
### Усовершенствованный цикл For Loop
``java
int[] numbers = {1,2,3,4,5};
for (int number: numbers) {
System.out.print(number);
}
// Выходные данные: 12345
```
Используется для обхода массивов или списков
##### Цикл While
``java
int count = 0;
while (count < 5) {
System.out.print(count);
count++;
}
// Выходные данные: 01234
```
##### Цикл Do While
````java
int count = 0;
do {
System.out.print(count);
count++;
} while (count < 5);
// Выходные данные: 01234
```
### Continue Statement
```java
for (int i = 0; i < 5; i++) {
if (i == 3) {
continue;
}
System.out.print(i);
}
// Выходные данные: 01245
```
### Break Statement
````java
for (int i = 0; i < 5; i++) {
System.out.print(i);
if (i == 3) {
break;
}
}
// Выходные данные: 0123
```
Java Collections Framework
--------------------
### Java Collections {.col-span-2}
| Коллекция | Интерфейс | Упорядоченный | Сортированный | Потокобезопасный | Дублирующий | Нулевой
|--------------------------------------------------------------------------------------------------------------------|-------------|---------|--------|-------------|-----------|--------------------|
| [ArrayList](https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html) | List | Y | _N_ | Y | | Y
| [Vector](https://docs.oracle.com/javase/8/docs/api/java/util/Vector.html) | List | Y | _N_ | Y | Y
| [LinkedList](https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html) | List, Deque | Y | _N_ | Y | Y
| [CopyOnWriteArrayList](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CopyOnWriteArrayList.html) | Список | Y | _N_ | Y | Y | Y
| [HashSet](https://docs.oracle.com/javase/8/docs/api/java/util/HashSet.html) | Набор | _N_ | _N_ | _N_ | Один `null` |
| [LinkedHashSet](https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashSet.html) | Set | Y | _N_ | _N_ | _N_ | One `null` |
| [TreeSet](https://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html) | Set | Y | _N_ | _N_ | _N_ | _N_.
| [CopyOnWriteArraySet](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CopyOnWriteArraySet.html) | Set | Y | _N_ | _N_ | Один `null` |
| [ConcurrentSkipListSet](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentSkipListSet.html) | Set | Y | Y | _N_ | _N_ | _N_ | _N_
| [HashMap](https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html) | Map | _N_ | _N_ | _N (key)_ | One `null` _(key)_ |
| [HashTable](https://docs.oracle.com/javase/8/docs/api/java/util/Hashtable.html) | Map | _N_ | _N_ | _N (key)_ | _N (key)_
| [LinkedHashMap](https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html) | Map | Y | _N_ | _N (key)_ | One `null` _(key)_ |
| [TreeMap](https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html) | Map | Y | _N_ | _N (ключ)_ | _N (ключ)_ |
| [ConcurrentHashMap](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html) | Map | _N_ | Y | _N (key)_ | _N_ |
| [ConcurrentSkipListMap](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentSkipListMap.html) | Map | Y | Y | _N (key)_ | _N_ |
| [ArrayDeque](https://docs.oracle.com/javase/8/docs/api/java/util/ArrayDeque.html) | Deque | Y | _N_ | Y | _N_ | _N_.
| [PriorityQueue](https://docs.oracle.com/javase/8/docs/api/java/util/PriorityQueue.html) | Очередь | Y | _N_ | _N_ | Y | _N_ | _N_.
| [ConcurrentLinkedQueue](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html) | Очередь | Y | _N_ | Y | _N_ | _N_.
| [ConcurrentLinkedDeque](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentLinkedDeque.html) | Deque | Y | _N_ | Y | _N_ | Y.
| [ArrayBlockingQueue](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ArrayBlockingQueue.html) | Queue | Y | _N_ | Y | _N_ | _N_.
| [LinkedBlockingDeque](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/LinkedBlockingDeque.html) | Deque | Y | _N_ | Y | _N_ | Y
| [PriorityBlockingQueue](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html) | Queue | Y | _N_ | Y | Y | _N_ | Y | _N_ |
{.show-header .left-text}
### ArrayList
``java
List<Integer> nums = new ArrayList<>();
// Добавление
nums.add(2);
nums.add(5);
nums.add(8);
// Извлечение
System.out.println(nums.get(0));
// Индексирование для итерации цикла
for (int i = 0; i < nums.size(); i++) {
System.out.println(nums.get(i));
}
nums.remove(nums.size() - 1);
nums.remove(0); // ОЧЕНЬ медленно
for (Integer value : nums) {
System.out.println(value);
}
```
### HashMap
``java
Map<Integer, String> m = new HashMap<>();
m.put(5, "Пять");
m.put(8, "Восемь");
m.put(6, "Шесть");
m.put(4, "Четыре");
m.put(2, "Два");
// Получение
System.out.println(m.get(6));
// Лямбда forEach
m.forEach((key, value) -> {
String msg = key + ": " + value;
System.out.println(msg);
});
```
### HashSet
```java
Set<String> set = new HashSet<>();
if (set.isEmpty()) {
System.out.println("Пусто!");
}
set.add("собака");
set.add("кошка");
set.add("мышь");
set.add("змея");
set.add("медведь");
if (set.contains("cat")) {
System.out.println("Содержит кошку");
}
set.remove("cat");
for (String element : set) {
System.out.println(element);
}
```
### ArrayDeque
``java
Deque<String> a = new ArrayDeque<>();
// Использование функции add()
a.add("Dog");
// Использование addFirst()
a.addFirst("Cat");
// Использование addLast()
a.addLast("Лошадь");
// [Cat, Dog, Horse].
System.out.println(a);
// Элемент доступа
System.out.println(a.peek());
// Удалить элемент
System.out.println(a.pop());
```
Misc
----
### Модификаторы доступа {.col-span-2}
| Модификатор | Класс | Пакет | Подкласс | Мир |
|-------------|-------|---------|----------|-------|
| public | Y | Y
protected | protected | Y | Y | _N_ | Y
| без модификатора | Y | _N_ | _N_
| private | Y | _N_ | _N_
{.show-header .left-text}
### Регулярные выражения
``java
String text = "Я изучаю Java";
// Удаление всех пробелов
text.replaceAll("Я изучаю Java+", "");
// Разделение строки
text.split("|");
text.split(Pattern.quote("|"));
```
Смотрите: [Regex в java](/regex#regex-in-java)
### Комментарий
``java
// Я - однострочный комментарий!
/*
А я
многострочный комментарий!
*/
/**
* Это
* это
* документация
* комментарий
*/
```
### Ключевые слова {.col-span-2}
- абстрактный
- продолжать
- для
- новый
- переключатель
- утверждать
- по умолчанию
- переходить
- пакет
- синхронизированный
- логический
- делать
- if
- частный
- this
- break
- двойной
- реализация
- защищённый
- бросок
- байт
- else
- импорт
- public
- броски
- case
- перечисление
- instanceof
- возврат
- переходный
- catch
- extends
- int
- короткий
- try
- char
- final
- интерфейс
- статический
- пустота
- класс
- наконец
- long
- strictfp
- летучий
- const
- float
- родной
- супер
- while
{.marker-none .cols-6}
### Математические методы
| Метод | Описание
|-----------------------|------------------------|
| `Math.max(a,b)` |Максимум из a и b |Максимум из a и b |Max.min(a,b)|Макс.
| | `Math.min(a,b)` |Минимум из a и b | | |Math.abs(a,b)|| из a и b
| | `Math.abs(a)` | Абсолютное значение a
| | `Math.sqrt(a)` | Квадратный корень из a
| | `Math.pow(a,b)` | Мощность b | Мощность b
| | `Math.round(a)` | Ближайшее целое число |
| `Math.sin(ang)` | Синус угла
| | `Math.cos(ang)` | Косинус угла
| | `Math.tan(ang)` | Тангенс угла
| | `Math.asin(ang)` | Обратный синус угла
| `Math.log(a)` | Натуральный логарифм от a
| | `Math.toDegrees(rad)` | Угол rad в градусах
| `Math.toRadians(deg)` | Угол deg в радианах |
### Try/Catch/Finally
``java
try {
// что-то
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("всегда печатается");
}
```