Курсы по Java для новичков
676 subscribers
66 photos
1 video
4 files
73 links
Я Оксана Еськова - преподаватель Вуза с 20-летним стажем.
Научу писать код на Java c нуля.
Курсы c автоматической проверкой задач: https://stepik.org/users/23008752
Все вопросы сюда 👉 @aksana_yaskova
Download Telegram
public class Main {
void print(long x) {
System.out.println("long");
}

void print(Integer x) {
System.out.println("Integer");
}

public static void main(String[] args) {
Main t = new Main();
t.print(5);
}
👍3
Что будет выведено на консоль?
Anonymous Quiz
27%
long
47%
Integer
16%
Ошибка компиляции
9%
Runtime error
👍5
public class Test {
void print(Integer x) {
System.out.println("Integer");
}
void print(String x) {
System.out.println("String");
}

public static void main(String[] args) {
Test t = new Test();
t.print(null);
}
}
👍3
Что будет выведено на консоль?
Anonymous Quiz
24%
Integer
15%
String
37%
Ошибка компиляции
24%
Runtime Error
👍4
class Test {
void print(Object x) {
System.out.println("Object");
}
void print(String x) {
System.out.println("String");
}

public static void main(String[] args) {
Test t = new Test();
t.print(null);
}
}
👍4
На ту же тему: что будет выведено на консоль?
Anonymous Quiz
33%
Object
33%
String
26%
Ошибка компиляции
7%
Runtime Error
😢1
Завтра 14 февраля — день любви...
Кто-то признаётся людям. А я признаюсь… Java.💥💥💥
Потому что:
• она строгая, но справедливая
• если что-то не компилируется — значит, я правда ошиблась
• она учит думать
И что самое романтичное? Она не терпит неопределённости.
Либо true, либо false. Без токсичных «почти». ❤️

Кстати, Степик затеял “Тиндер курсов”. Может, это поможет встретиться с теми самыми знаниями, о которых Вы всегда мечтали 😊
6
💡 Итог: правила передачи null в метод
null можно передать в любой ссылочный тип, но нельзя передать в примитивный параметр
компилятор всегда выбирает самый специфичный тип. Если есть переменная суперкласса и подкласса, то выбирается подкласс.
• если есть несколько не связанных ссылочных типов – неоднозначность и ошибка компиляции!
2🔥1
class Parent {
static void print() {
System.out.println("Parent");
}
}

class Child extends Parent {
static void print() {
System.out.println("Child");
}
}

public class Main {
public static void main(String[] args) {
Parent obj = new Child();
obj.print();
}
}
🔥7
public class Test {
static void hello() {
System.out.println("Static hello");
}

void hello(int x) {
System.out.println("Instance hello");
}

public static void main(String[] args) {
Test t = null;
t.hello();
}
}
🔥3
Что будет выведено на консоль?
Anonymous Quiz
46%
Static hello
9%
Instance hello
25%
NullPointerException
20%
Ошибка компиляции
23 февраля и 8 марта — отличный повод подарить… знания.

Мы живём в мире, где код пишут и мужчины, и женщины.
Где важен не пол, а логика и умение думать.
Не праздник, а страсть к развитию.

Но раз уж календарь решил устроить гендерные праздники — почему бы не использовать их как повод прокачать мозг?

Поэтому - короткая распродажа курсов по программированию со скидкой 15% 🎉
Подарить можно кому угодно:
— ему,
— ей,
— себе (особенно себе).

Потому что лучший подарок — это навык, который останется с вами дольше любых цветов и носков.
Учиться — вне гендера. Скидки — по расписанию до 9 марта 😉
"Основы языка Java"
"Объектно-ориентированное программирование на Java"
"Прокачай Java"
"Java Core: программа курсов"
5
import java.util.*;

class Person {
String name;

Person(String name) {
this.name = name;
}
}

public class Main {
public static void main(String[] args) {
Map<Person, String> map = new HashMap<>();

Person p1 = new Person("Alex");
Person p2 = new Person("Alex");

map.put(p1, "Developer");

System.out.println(map.get(p2));
}
}
Что будет выведекно на консоль?
Anonymous Quiz
24%
Developer
53%
null
20%
Ошибка компиляции
4%
Runtime Exception
🎉2
import java.util.*;

class Person {
String name;

Person(String name) {
this.name = name;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person person)) return false;
return Objects.equals(name, person.name);
}
}

public class Main {
public static void main(String[] args) {
Map<Person, String> map = new HashMap<>();

Person p1 = new Person("Alex");
Person p2 = new Person("Alex");

map.put(p1, "Developer");

System.out.println(map.get(p2));
}
}
👍3
Что будет выведено на консоль?
Anonymous Quiz
46%
Developer
34%
null
18%
Ошибка компиляции
2%
Runtime Error
👍2
🔎 Как устроен HashMap в Java?
HashMap — это не просто “таблица ключ-значение”.
Под капотом — массив + связные списки + (иногда) деревья 😎

Когда вы делаете: map.put(key, value); происходит следующее:
1. Вызывается hashCode() для ключа
2. Хэш преобразуется в индекс массива
3. Определяется корзина (bucket), которая соответствует этому элементу массива, куда добавляется элемент.

Раньше (до Java 8) в корзине хранился связный список. С Java 8 — если элементов становится много (≥ 8), список превращается в красно-чёрное дерево 🌳. Это ускоряет поиск с O(n) → O(log n).

Когда вы делаете get(key):
1. Снова вычисляется hashCode() и определяется корзина
2. Внутри корзины перебирается список (или поиск в дереве) - вызывается equals() для поиска совпадений ключа
3. Если ключ найден — возвращается значение

Почему важно переопределять equals() и hashCode() вместе?
Потому что:
hashCode() определяет корзину
equals() подтверждает совпадение ключа
Нарушите контракт — и HashMap начнёт работать… непредсказуемо 😈
👍11
final StringBuilder sb = new StringBuilder("Java");
sb.append("!");
System.out.println(sb);
👍2