Курсы по Java для новичков
676 subscribers
66 photos
1 video
4 files
73 links
Я Оксана Еськова - преподаватель Вуза с 20-летним стажем.
Научу писать код на Java c нуля.
Курсы c автоматической проверкой задач: https://stepik.org/users/23008752
Все вопросы сюда 👉 @aksana_yaskova
Download Telegram
Возвращаемся к практике тестов:
int[] a = {1, 2, 3};
int[] b = a;
b[0] = 10;
a[1] = 7;
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
👍2
Что выведет код?
Anonymous Quiz
7%
1 2 3
32%
1 7 3
60%
10 7 3
1%
10 2 3
👍2
Типичная ошибка с наследованием в Java
Что не так с этим кодом?
class Account {
String login;
String password;
}

class Student extends Account {
String name;
int age;
}

На первый взгляд — всё корректно. Но задумайтесь:
• Можно ли объект Student передать туда, где ожидается Account?
• А если у студента несколько аккаунтов?
• А если аккаунт есть не только у студентов, но и у преподавателей?
❗️ Проблема здесь не в синтаксисе, а в неверной модели наследования.
Почему нельзя наследовать Student от Account?
Потому что между ними нет отношения is-a. Нельзя корректно сказать, что студент является аккаунтом.
Здесь другое отношение — has-a («имеет»): студент имеет аккаунт, но не является им.
В таком случае нужно использовать композицию, а не наследование:
class Account {
String login;
String password;
}

class Student {
String name;
int age;
Account account;
}
11👍4🔥1
Свежие отзывы на курс "Объектно-ориентированное программирование на Java". Спасибо всем, кто оставляет отзыв! Для меня это очень важно 🤗
👍10
List<Integer> ints = Arrays.asList(3, 6, 8, 12, 55, 4);

Какой код позволит сформировать массив из элементов этого списка, которые меньше 10?
Anonymous Quiz
46%
Integer[] numbers = ints.stream().filter(i -> i < 10).toArray();
6%
Integer[] numbers = ints.filter(i -> i < 10).toArray(Integer[]::new);
38%
Integer[] numbers = ints.stream().filter(i -> i < 10).toArray(Integer[]::new);
10%
Integer[] numbers = ints.stream().toArray().filter(i -> i < 10);
👍2👏1
Топ-5 стандартных классов Java, которые реально используют в проектах 👇

🔹 1. ArrayList
Рабочая лошадка. Используется везде, где нужна динамическая коллекция: данные из БД, DTO, результаты вычислений. Быстро и удобно.

🔹 2. HashMap
Хранение пар «ключ–значение»: кэш, конфигурации, группировки, быстрый доступ к данным. Если не знаешь HashMap — на проекте будет боль.

🔹 3. Optional
Спасает от NullPointerException и делает код честнее. Часто используется в сервисах и репозиториях, особенно в современном Java-коде.

🔹 4. LocalDate / LocalDateTime
Работа с датами без боли: планирование, логи, бизнес-логика, дедлайны. Старый Date на проде давно не в почёте.

🔹 5. Stream
Фильтрация, маппинг, агрегация данных в одну строку. Читаемый код и меньше шаблонных циклов — за это стримы любят в командах.

📌 Вывод простой: знание стандартных классов Java реально облегчает жизнь. И это логичный следующий шаг после ООП.
9👍4🔥2
StringBuilder sb1 = new StringBuilder("Java");
StringBuilder sb2 = new StringBuilder("Java");
Какая проверка окажется true?
Anonymous Quiz
11%
if (sb1 == sb2)
57%
if (sb1.equals(sb2))
32%
if (sb1.toString().contentEquals(sb2))
👍9
String s1 = "Java";
String s2 = "Java";
String s3 = new String("Java");
String s4 = s3.intern();
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s1 == s4);
👍7
Что будет выведено на консоль?
Anonymous Quiz
13%
true true true
26%
false false false
37%
true false true
24%
true false false
String str = "I love Java";
str.substring(2, 6);
System.out.println(str);
Что будет выведено на консоль?
Anonymous Quiz
51%
love
3%
Java
32%
I love Java
14%
Ошибка компиляции
👍7🔥2
Java, которой учат. И Java, за которую платят…
Учебный код нужен, чтобы понять идею.
Продакшн-код — чтобы с ним жили годами.
1. Студенту главное, чтобы программа заработала.
В реальном Java-коде важно, как программа будет развиваться дальше: новые требования, новые коллеги.
2. Куча логики в одном методе — нормально для обучения.
В продакшене — маленькие методы, ясные имена, чётко разделённая ответственность.
3. В учебных задачах можно «подогнать» решение под тесты.
В реальной Java — проверки, исключения, валидация, логирование.
4. Учебный код читает привычный ко всему преподаватель.
Нормальный код читают коллеги (и ты сам через год). Поэтому читаемость важнее «хитрого» решения и экономии двух строк.
5. Коллекции, Stream API, ООП, SOLID — не ради галочки,
а чтобы код было легко расширять и безопасно менять.
👉 Опытного Java-разработчика отличает не знание конструкций языка,
а умение писать код, который не страшно открыть снова.
12👍7
Как в Java объявить метод, который будет из исходного массива выбирать отрицательные элементы и формировать из них новый массив?
Anonymous Quiz
9%
public static int* negative(int* arr, int length){ }
24%
public static int[] negative(int[] arr, int length) { }
56%
public static int[] negative(int[] arr) { }
12%
public static void negative(int[] arr) { }
👍5
Integer i1 = 55;
Integer i2 = 55;
Integer i3 = 3000;
Integer i4 = 3000;
System.out.println(i1 == i2);
System.out.println(i3 == i4);
👍2
Что выведет код?
Anonymous Quiz
22%
false false
28%
true false
5%
false true
45%
true true
4👍2🙈1
👍2
Нужно инициализировать список перечислением элементов, а потом добавить новый объект:
//что здесь?
list.add("Петр"); for (String item : list) { System.out.print(item + " "); } Какой вариант инициализации верный?
Anonymous Quiz
24%
List<String> list = Arrays.asList("Aнна", "Олег", "Иван");
20%
List<String> list = List.of("Aнна", "Олег", "Иван");
37%
List<String> list = new ArrayList<>(List.of("Aнна", "Олег", "Иван"));
20%
List<String> list = Stream.of("Aнна", "Олег", "Иван").toList();
👍3
Что раньше: курица или яйцо
ООП или «Прокачай Java» ?
👀

Само по себе знание принципов ООП недостаточно, чтобы выйти на рынок труда.
Без понимания стандартных библиотек и экосистемы Java в продакшн действительно делать нечего.

Но есть и обратная сторона.

Разобраться в структуре библиотек и сигнатурах методов невозможно, если не понимать базовые идеи ООП:
• что такое классы и интерфейсы?
• как они связаны между собой?
• что означает throws в сигнатуре метода и зачем нужны исключения?
Все эти вопросы неизбежно возникают, если начинать изучение Java-библиотек без фундамента по ООП.

👉 Поэтому после курса «Основы языка Java» я рекомендую начать с
«Основ объектно-ориентированного программирования на Java».

👉 А если с ООП вы уже знакомы — смело переходите к курсу
«Прокачай Java» и погружайтесь в современные инструменты и практики.

И напоминаю: по ссылкам выше действует постоянная скидка 10% для читателей этого телеграм-канала 💙
12
//что здесь?
list.add(1);
list.add(2);
for (int i : list) {
System.out.println(i);
}
👍2