undefined

Задачи на время жизни объекта

Java Syntax
6 уровень , 5 лекция
Открыта

— Привет, Амиго! Вот тебе пара задачек:

undefined
2
Задача
Java Syntax,  6 уровень,  5 лекция
Недоступна
Метод finalize класса Cat
Случайно потерять объект сложно: пока у вас есть на него хотя бы одна ссылка, это значит, что он жив. Но если нет… Тогда к объекту приходит метод finalize, этот непредсказуемый ассасин, состоящий на службе у Java-машины. Давайте создадим такой же метод сами: protected void finalize() throws Throwable. Последние два слова станут понятны чуть позднее.
undefined
2
Задача
Java Syntax,  6 уровень,  5 лекция
Недоступна
Пустые кошки, пустые псы
Минутка деструктива на JavaRush. На предыдущем уровне мы часто «конструировали» котов и псов (конструкторы для классов Cat и Dog) и создавали новых конкретных котов и псов (объекты). Теперь пришло время уничтожения объектов, на которые никто не ссылается. В классах Cat и Dog пишем метод finalize, который выводит на экран текст об уничтожении объектов.
undefined
2
Задача
Java Syntax,  6 уровень,  5 лекция
Недоступна
По 50 000 объектов Cat и Dog
Если вы еще не прониклись прелестью циклов в программировании, можете попробовать решить эту самую задачу без них. Хотя тут речь не столько о циклах, сколько об уничтожении незадействованных объектов. Итак, создайте в цикле по 50 000 объектов Cat и Dog. Этим действием мы провоцируем Java-машину вызвать хотя бы разочек метод finalize.
undefined
2
Задача
Java Syntax,  6 уровень,  5 лекция
Недоступна
Ставим котов на счётчик
Во Вселенной есть баланс, где-то прибудет, где-то убудет. В нашей галактике прокатывает точно не знать, где и что, но вот в компьютере с его дискретной памятью так не получится. Поэтому в этой программе нужно отредактировать пару важных вещей. В конструкторе класса Cat мы будем увеличивать счётчик на 1, а в методе finalize — уменьшать.
undefined
10
Задача
Java Syntax,  6 уровень,  5 лекция
Недоступна
Чётные и нечётные циферки
Давайте определим, сколько четных цифр, а сколько нечетных в числе, введенном с клавиатуры. Если число делится без остатка на 2 (т. е. остаток равен нулю), значит оно четное. Увеличиваем на 1 счетчик четных цифр (статическая переменная even). Иначе число нечетное, увеличиваем счетчик нечетных цифр (статическая переменная odd).
Комментарии (693)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
Iv@n 8 уровень, Минск
13 апреля 2021
В задаче про создание 50000 котов и собак finalize() переопределён и вызывается через super - ссылаясь на текущий экземпляр родительского класса, тобишь Object. Отсюда у меня возник вопрос, если я конечно всё правильно понял: " Зачем они это сделали и является ли это более правильным чем написание обычного метода без переопределения?"
Владимир Назаренко 15 уровень, Москва
19 марта 2021
В задаче про чёт/нечёт строку сразу сохранял в массив символов (ребята в интернете подсказали как это сделать), прямо в момент ввода, а потом в цикле проходил массив, по очереди каждый символ переводил в int и проверял чёт/нечёт. Решение на 30 строк. Посмотрел "правильное" решение: сломается как только введёшь число больше 1 млрд. Бу-у-у-у.
Владимир Назаренко 15 уровень, Москва
18 марта 2021
Задача про 50000 несколько раз запускал и даже валидацию прошло, но ни разу не написало про уничтожение. И ещё непонятно почему finalize зачёркнуто... 🤔 Кто-нибудь знает почему? Спасибо.
Sergey Badanin 7 уровень, Вологда
18 марта 2021
- Привет, Амиго! Вот тебе пара пять задачек😄
Игорь Кривцов 16 уровень, Санкт-Петербург
12 марта 2021
Задача про 50 000 котов и собак... запускал несколько раз, ни разу не написала, что, что-то уничтожено ))) ...
Viktory 6 уровень, Москва
2 марта 2021
Последняя задачка заставила погуглить 😁, дурацкое чувство, когда ты знаешь как решить, но не знаешь КАК 🤣 Оказалось всё не так сложно: переводим строку в массив и разделяем на символы. Создаём массив интов, поочереди, в цикле, проходим по стринговому массиву и переопределяем строки в инты. А потом обычный if с вычислением остатка и всё.) Решение на 40 строк.
Николай 8 уровень, Москва
24 февраля 2021
"Чётные и нечётные циферки": Строка - это массив символов (char). У класса String есть статический метод toCharArray. Можно просто пройтись в цикле по массиву полученных символов из строки и попробовать вычислить остаток. Надеюсь я не первый кто об этом пишет.
Svitlana 17 уровень
24 февраля 2021
Поскольку надо определить сколько четных и нечетных цифр в числе, мы можем в цикле уменьшать число в 10 раз и проверять каждый раз четное ли число. Если четное, значит и последняя цифра четная и наоборот. Добавляем в счетчик.
Boris Gretskis 9 уровень, Могилев
20 февраля 2021
1. нашел количество символов строки = length 2. перевел в число 3. условие больше 0 4. цикл (от 0 до length){ проверка на остаток %2 если 0 то even+=1; иначе odd+=1; 5. приравниваем числу = число минус последний символ(парсим и substring) 6. вывод строки типа "Even: "+ even + " Odd: "+ odd все отрабатывает. а валидация все кроме считывания с клавиатуры минусы(типа Убедись, что количество нечетных цифр сохраняется в переменную odd, Программа должна выводить текст на экран.)WHY???
Андрей 11 уровень
5 февраля 2021
Способы найти количество цифр в числе: https://habr.com/ru/post/269237/