Курсы по Java для новичков
676 subscribers
66 photos
1 video
4 files
73 links
Я Оксана Еськова - преподаватель Вуза с 20-летним стажем.
Научу писать код на Java c нуля.
Курсы c автоматической проверкой задач: https://stepik.org/users/23008752
Все вопросы сюда 👉 @aksana_yaskova
Download Telegram
Вам знакомо чувство, когда ты безнадёжно тупишь?
Когда смотришь на задачу и хочется просто плюнуть и забыть про неё?
Я отлично помню это ощущение. В институте нам задали написать программу для работы с деком на языке PL-1.
Да, в те времена был такой язык. А вот интернета и Степика не было. Если преподаватель объяснял плохо, оставался только один вариант — искать книги и разбираться самой.
Это было трудно. Это было больно. Особенно тяжело – не понимать написанного. Но в этом процессе я научилась «докапываться до сути» и сделала важный вывод:
👉 Всё, что создано людьми (например, язык программирования), может понять любой человек. Главное — не считать себя тупым, а искать объяснения, подходящие именно для твоего уровня.
Позже оказалось, что это умение разбираться и объяснять сложные вещи (сначала самой себе, а потом и другим) оказалось полезным не только мне, но и многим людям.
💡 Если вам тоже хоть раз хотелось бросить программирование к ядрене-фене – ставьте лайк! Мы все через это проходили. 😅
41👍12🔥6😢2
А это задачка уже для завершающих курс "Прокачай Java"!
👍5
В какой последовательности изучать возможности Java?
Это очень важный вопрос. Ведь правильная последовательность изложения материала даст Вам не просто шаблон решения той или иной задачи – она даст Вам понимание языка в целом!
Давайте проиллюстрируем это на примере о сортировке подарков из последнего теста.
Ученики курса “Объектно-ориентированное программирование на Java” решили бы эту задачу так:
Collections.sort(gifts, new Comparator<Gift>() {
@Override
public int compare(Gift o1, Gift o2) {
if(o1.getWeight()>o2.getWeight()) return 1;
if(o1.getWeight() < o2.getWeight()) return -1;
return 0;
}
});

Т.е. здесь второй параметр метода Collection.sort() – это безымянный класс, который реализует интерфейс Comparator. И метод compare() этого класса переопределяется прямо тут, в описании вызова метода sort(). Правильно, но громоздко, не так ли?
Ученики курса “Прокачай Java” заменили бы переопределение метода более коротким лямбда-выражением:
Collections.sort(gifts, (o1, o2) -> {
if (o1.getWeight() > o2.getWeight()) return 1;
if (o1.getWeight() < o2.getWeight()) return -1;
return 0;
});

А когда бы познакомились с новыми статическими методами, добавленными в интерфейс Comparator в Java 8, заменили бы это лямбда - выражение вызовом статического метода comparingDouble() с использованием ссылки на метод Gift::getWeight:
Collections.sort(gifts, Comparator.comparingDouble(Gift::getWeight));

И этот код уже гораздо короче. Но понятным до конца он становится только тогда, когда сам пройдешь эту эволюцию от создания безымянного класса до использования статических методов компаратора! А то, что понятно – запоминается надолго…
Именно поэтому рекомендую изучать Java Core в той последовательности, которую нам задает "Java Core: Программа курсов". К тому же это и значительно дешевле, особенно со скидкой 10% для подписчиков Телеграмм-канала.
👍6🔥41🙏1
Что нужно знать о конструкторах?
1) Конструкторы не наследуются! Это значит, что в наследнике нужно обязательно прописывать свой конструктор. Но при этом первое, что выполняется в конструкторе наследника – это вызов конструктора суперкласса. Т.е. всегда сначала отрабатывает конструктор суперкласса, а потом – конструктор подкласса.
class Father {
private int number = 0;

public Father(int number) {
this.number = number;
}

public Father() {
}
}

class Child extends Father {
public Child(int number) {
super(number); //вызов конструктора Father и передача ему параметра
}
public Child() {
//здесь тоже неявно вызывается конструктора Father без параметров
}
}


2) Если в классе не определен конструктор, то по умолчанию создается конструктор без параметров. Но он публичный, а не приватный!
3) Если в классе мы объявим хоть один конструктор с параметром, этот конструктор по умолчанию становится недействительным. И мы должны его явно описать, если намерены использовать. Как в примере мы описали конструктор
public Father() {}

4) Конструктор не может быть вызван напрямую, как обычный метод. Нужно использовать операцию new. Например,
Child c = new Child(7);
👍64
🚀 Срочные новости из мира C++ и Java! 🚀

🔹 Oracle и Bjarne Stroustrup анонсировали Java++ – язык, сочетающий мощь C++ и удобство Java! Теперь вместо Garbage Collector – "Garbage Pointer", который случайным образом удаляет объекты в памяти, чтобы не было утечек!

🔹 В Java++ убрали null, потому что программисты всё равно его ненавидят. Теперь вместо него – Schrödinger’s reference, что означает, что неизвестно, есть объект или он отсутствует. Компилятор сам решит, что с этим делать!

🔹 Самая главная фича: исключения теперь автоматически исправляют код, вместо выбрасывания ошибки! Если делишь на ноль, компилятор просто меняет 0 на 1 – потому что кто вообще делит на ноль специально?

P.S. Подробности завтра... если компилятор нас не скомпилит раньше! 🤡🔥
🤡16🔥10😁9👏2
Сегодня простой вопрос для начинающих...
Что будет результатом кода?
Anonymous Quiz
50%
5
39%
10
9%
Ошибка компиляции
0%
null
2%
UnsupportedOperationException
C наступающим праздником!
Христиане называют Пасху “праздник праздников и торжество торжеств”. Поэтому я никак не могу оставить Вас без подарка! И даже если Вы атеист или мусульманин – для Вас тоже никаких препятствий получить скидку 20% на любой из моих курсов. Для этого переходите по ссылкам ниже. Но учтите, скидка действует ровно неделю: до 24 апреля:
11👍1
Большая весенняя распродажа курсов на Степике уже завтра! С 20 мая по 2 июня. На все мои курсы скидка 15%, а на курс “Основы языка Java” – 25%.
Отличная возможность прикупить курс себе или в подарок. Для покупки переходите по ссылкам:
Основы языка Java
Объектно-ориентированное программирование на Java
Прокачай Java
Java Core: программа курсов
Основы программирования на C/C++
Основы программирования на C/C++. Часть 2
Основы программирования на C/C++. Полная версия
🔥126🙏3❤‍🔥1🍾1
Изучаем подводные камни Java. А для начала программа:
public class Main {
public static void main(String[] args) {
Integer a = 100;
Integer b = 100;
Integer c = 200;
Integer d = 200;
System.out.println(a == b);
System.out.println(c == d);
}
}
👍5
Что будет выведено на консоль?
Anonymous Quiz
48%
true true
13%
true false
37%
false false
2%
false true
Друзья! Какой язык Вы изучаете? Как вы знаете, у меня есть курсы и по С++, и по Java. Мне интересно узнать, как складывается аудитория этого канала.
Anonymous Poll
64%
Изучаю Java
22%
Изучаю С++
14%
Мне нужны оба этих языка!
Channel name was changed to «Онлайн-курсы по С++/Java для новичков»
Что выведет следующий код?
public class ArrayTest {
public static void main(String[] args) {
int[] a = new int[5];
int[] b = a;
b[2] = 10;
a = new int[5];
System.out.println(b[2]);
}
}
👍2
воскресенье - время мемов...
😁7🔥5👍3
Продолжаем "простые" вопросы... Что выведет следующий код?
public class ArrayTest {
public static void main(String[] args) {
int[] a = {1, 2, 3};
modifyArray(a);
System.out.println(a[0]);
}

static void modifyArray(int[] arr) {
arr = new int[]{9, 9, 9};
}
}
👍4🔥2🤯1