Курсы по Java для новичков
676 subscribers
66 photos
1 video
4 files
73 links
Я Оксана Еськова - преподаватель Вуза с 20-летним стажем.
Научу писать код на Java c нуля.
Курсы c автоматической проверкой задач: https://stepik.org/users/23008752
Все вопросы сюда 👉 @aksana_yaskova
Download Telegram
Что выведет код?
Anonymous Quiz
34%
10 10
47%
5 5
15%
5 10
4%
10 5
👍6🤔1
public class Test {
public static void change(int[] arr) {
arr[0] = 10;
arr = new int[]{1, 2, 3};
}

public static void main(String[] args) {
int[] a = {5, 6, 7};
change(a);
System.out.println(a[0]);
}
}
👍2
Что выведет код?
Anonymous Quiz
21%
10
31%
5
29%
1
19%
Код не скомпилируется
👍3😢2
🧠 В Java нет передачи параметров по ссылке!
После теста с массивом многие делают вывод: «Ну вот же, массив изменился! Значит, он передаётся по ссылке».
На самом деле - нет! В Java все параметры передаются по значению.
Вопрос только в том, что именно является значением.
Посмотрим на код ещё раз. Переменная a в main() хранит ссылку на массив. При вызове в метод change() передается копия этой ссылки. Таким образом, arr и a указывают на один и тот же массив.
Почему arr[0] = 10 работает? Потому что мы меняем содержимое объекта, на который указывает arr. Обе ссылки (a и arr) смотрят на один массив → изменения видны снаружи.
Почему arr = new int[]{1,2,3} не работает? Потому что это изменение локальной переменной, т.е. копии. И это никак не влияет на переменную a. После выхода из метода локальная ссылочная переменная просто исчезает.
🎯 В Java – всегда передача параметра по значению. Даже для массивов. Даже если очень хочется иначе 🙂
🔥9
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