This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
- приватные финальные поля
|
||||
- конструктор
|
||||
- геттеры
|
||||
Переопределяются методы [[Класс Object|Object]]
|
||||
Переопределяются методы [Object](Класс%20Object.md)
|
||||
Можно добавить:
|
||||
- компактный конструктор
|
||||
- методы
|
||||
|
||||
@@ -13,7 +13,7 @@ public class Empty extends Object {
|
||||
1. `public String toString()` - строковое представление объекта.
|
||||
- Реализация по умолчанию: `ИмяКласса@хэшкод`
|
||||
- Переопределять для красивого вывода
|
||||
- [[Record]] автоматически переопределяет
|
||||
- [Record](Record.md) автоматически переопределяет
|
||||
2. `public boolean equals(Object obj)` - эквивалентность двух обхектов
|
||||
- `==` - сравнивает ссылки
|
||||
- По умолчанию `equals` тоже сравнивает ссылки, так что лучше переопределить
|
||||
@@ -25,13 +25,13 @@ public class Empty extends Object {
|
||||
5. Сравнение с null: `x.equals(null) == null // ВСЕГДА false`
|
||||
3. `public int hashCode()` - числовое значение для эффективной работы хэш-таблиц
|
||||
- Реализация по умолчанию: вычисление на основе адреса
|
||||
- Используется в [[HashMap]]
|
||||
- Между `equals` и `hashCode` должен соблюдаться определенный [[Контракт между equals и hashCode|контракт]]
|
||||
- Используется в [HashMap](../../Коллекции/HashMap.md)
|
||||
- Между `equals` и `hashCode` должен соблюдаться определенный [контракт](Контракт%20между%20equals%20и%20hashCode.md)
|
||||
4. `public final native Class<?> getClass()` - возвращает метаданные объекта во время выполнения
|
||||
- Основа для [[Reflection API|рефлексии]]
|
||||
- Основа для [рефлексии](../../Рефлексия/Reflection%20API.md)
|
||||
5. `protected native Object clone() thows CloneNotSupportedException` - создает и возвращает копию объекта
|
||||
- По умолчанию: shallow копия
|
||||
- Условие использования: реализация `Cloneable`
|
||||
- Не очень удачный метод в общем и целом
|
||||
6. `public final void wait()`, `public final native void notify()`, `public final native void notifyAll()` - для работы с многопоточностью (подробнее [[Взаимодейтсвие между потоками|здесь]])
|
||||
6. `public final void wait()`, `public final native void notify()`, `public final native void notifyAll()` - для работы с многопоточностью (подробнее [здесь](../../Многопоточность/Взаимодейтсвие%20между%20потоками.md))
|
||||
7. `protected void finalize() throws Thowable` - метод вызывался GC перед удалением объекта, сейчас `@Deprecated`
|
||||
@@ -35,4 +35,4 @@ int1==int2; // false
|
||||
- `floatValue()`
|
||||
- `doubleValue()`
|
||||
|
||||
Заметка о [[Character]]
|
||||
Заметка о [Character](../Работа%20с%20данными%20и%20типами/Character.md)
|
||||
@@ -6,4 +6,4 @@ public class Hello {
|
||||
}
|
||||
```
|
||||
Файл `Hello.java`, название файла должно совпадать с именем публичного класса, который может быть один на весь файл.
|
||||
Далее: [[Типы данных]]
|
||||
Далее: [Типы данных](Типы%20данных.md)
|
||||
+5
-5
@@ -1,4 +1,4 @@
|
||||
![[Операторы.png]]
|
||||

|
||||
## Выражения
|
||||
Оба операнда приводятся к одинаковому типу:
|
||||
`byte, char, short -> int -> long -> float -> double`
|
||||
@@ -13,9 +13,9 @@ float f = 4.0 * 15; // ошибка, double -> float
|
||||
```
|
||||
## Приоритет операций
|
||||
|
||||
![[Приоритет операций.png]]
|
||||

|
||||
|
||||
Отдельно про [[Строки#Конкатенация|конкатенацию]] строк
|
||||
Дополнительно [[Форматированный вывод]]
|
||||
Отдельно про [](../Работа%20с%20данными%20и%20типами/Строки.md#Конкатенация|конкатенацию) строк
|
||||
Дополнительно [Форматированный вывод](Форматированный%20вывод.md)
|
||||
|
||||
Далее: [[Условные конструкции и операторы]]
|
||||
Далее: [Условные конструкции и операторы](Условные%20конструкции%20и%20операторы.md)
|
||||
@@ -5,7 +5,7 @@
|
||||
- Присваивание: `x = 67`;
|
||||
- Инициализация: `int x = 67;`
|
||||
|
||||
Для [[Типы данных#Примитивные типы данных|примитивных]] типов выделяется место под X байт
|
||||
Для [](Типы%20данных.md#Примитивные%20типы%20данных|примитивных) типов выделяется место под X байт
|
||||
## Преобразование примитивов
|
||||
Разрешено неявное расширение
|
||||
```Java
|
||||
@@ -21,4 +21,4 @@ byte y = (byte) count; // старшие байты при этом отброс
|
||||
## Константы
|
||||
Ключевое слово `final`, можно либо один раз проинициализировать, либо один раз объявить, а потом один раз присвоить
|
||||
|
||||
Далее: [[Операторы и выражения]]
|
||||
Далее: [Операторы и выражения](Операторы%20и%20выражения.md)
|
||||
@@ -1,5 +1,5 @@
|
||||
В Java: статическая типизация, сильная, явная
|
||||
Типы делятся на: [[Типы данных#Примитивные типы данных|примитивные]] и [[Типы данных#Ссылочные типы данных|ссылочные]]
|
||||
Типы делятся на: [](.md#Примитивные%20типы%20данных|примитивные) и [](.md#Ссылочные%20типы%20данных|ссылочные)
|
||||
|
||||
# Примитивные типы данных
|
||||
1. Целые - `byte`, `short`, `int`, `long`
|
||||
@@ -7,7 +7,7 @@
|
||||
3. Вещественные - `float`, `double`
|
||||
4. Логический - `boolean`
|
||||
|
||||
![[Типы данных.png]]
|
||||

|
||||
|
||||
Запомнить легко, byte - оно понятно, дальше увеличивается степень двойки.
|
||||
И полезно запомнить, что int вмещает около 2 млрд
|
||||
@@ -15,18 +15,18 @@ char - заключается в одинарные кавычки, один Uni
|
||||
|
||||
Хранятся в стеке, копируется значение, сравнивается значение
|
||||
|
||||
Есть [[Классы-обертки|обертки]] для примитивов
|
||||
Есть [обертки](../Базовые%20типы%20ООП/Классы-обертки.md) для примитивов
|
||||
# Ссылочные типы данных
|
||||
- [[Массивы]]
|
||||
- [[Строки]]
|
||||
- [Массивы](../Работа%20с%20данными%20и%20типами/Массивы.md)
|
||||
- [Строки](../Работа%20с%20данными%20и%20типами/Строки.md)
|
||||
- Классы
|
||||
- [[Интерфейсы]]
|
||||
- [Интерфейсы](../../ООП/Интерфейсы.md)
|
||||
- Аннотации
|
||||
- [[Record]]
|
||||
- [[Enum]]
|
||||
- [Record](../Базовые%20типы%20ООП/Record.md)
|
||||
- [Enum](../Базовые%20типы%20ООП/Enum.md)
|
||||
- ...
|
||||
|
||||
Объект хранится в куче, а ссылка хранится в стеке. У ссылки размер - 4 или 8 байт. Копируется и сравнивается ссылка.
|
||||
|
||||
Дополнительно: [[Приведение ссылочных типов]]
|
||||
Далее: [[Переменные]]
|
||||
Дополнительно: [Приведение ссылочных типов](../Работа%20с%20данными%20и%20типами/Приведение%20ссылочных%20типов.md)
|
||||
Далее: [Переменные](Переменные.md)
|
||||
+1
-1
@@ -58,4 +58,4 @@ int x = switch (y) {
|
||||
Что разрешено: `byte`, `short`, `char`, `int`, `Byte`, `Short`, `Character`, `Integer`, `String`, `Enum`
|
||||
Для ссылочных типов идет сравнение через `equals()`, что радует
|
||||
|
||||
Далее: [[Циклы]]
|
||||
Далее: [Циклы](Циклы.md)
|
||||
@@ -1,4 +1,4 @@
|
||||
Позволяют избегать дублирование кода, помогают обходить [[Массивы|массивы]]
|
||||
Позволяют избегать дублирование кода, помогают обходить [массивы](../Работа%20с%20данными%20и%20типами/Массивы.md)
|
||||
## С предусловием - while
|
||||
```Java
|
||||
int x = 100;
|
||||
@@ -43,4 +43,4 @@ for (int[] inner: array) {
|
||||
}
|
||||
```
|
||||
|
||||
Далее: [[Функции]]
|
||||
Далее: [Функции](../Работа%20с%20данными%20и%20типами/Функции.md)
|
||||
@@ -34,7 +34,7 @@ s4 = s4.intern();
|
||||
5 + 10 + "Hello" + 5 + 10 // 15Hello510
|
||||
```
|
||||
## StringBuilder
|
||||
Хранит массив char и позволяет легко менять строку, пример паттерна [[Builder]]
|
||||
Хранит массив char и позволяет легко менять строку, пример паттерна [Builder](../../Паттерны%20проектирования/Builder.md)
|
||||
```Java
|
||||
StringBuilder sb = new StringBuilder("Hello");
|
||||
sb.append("!");
|
||||
@@ -62,4 +62,4 @@ String res = sb.toString();
|
||||
- `split(str)` - сплит по строке
|
||||
- `String.join(delimiter, elements)` - соединение массива по символу
|
||||
|
||||
Дополнительн: [[Character]]
|
||||
Дополнительн: [Character](Character.md)
|
||||
Reference in New Issue
Block a user