Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (27)

Лучшие ответы пользователя

Все ответы (40)
  • Как работают бесконечные циклы с пустым телом цикла в Java?

    @koperagen
    public class Main {
        public static void main(String[] args) {
            int a = Integer.MAX_VALUE;
            System.out.println(++a == Integer.MIN_VALUE); // true
        }
    }


    Получается, в вашем коде цикл доходит до максимального положительного значения int, происходит переполнение, переменная принимает отрицательное значение и условие цикла резко перестает быть истинным. Т.е. это не бесконечный цикл, но 2 миллиарда принтов в стандартный вывод ну очень уж долго происходят, поэтому впечатление, что цикл бесконечный.
    Ответ написан
  • Как лучше сократить код return на Java?

    @koperagen
    Условие "две стороны параллельны, другие две - нет" похоже на оператор xor
    Для него таблица истинности
    1 1 -> 0
    1 0 -> 1
    0 1 -> 1
    0 0 -> 0
    Т.е. можно записать так
    isSidesParallel(sideAb, sideCd) ^ isSidesParallel(sideBc, sideDa)
    (^ - это xor в джаве)
    Ответ написан
  • Почему коллекции в Kotlin урезаны?

    @koperagen
    Ответ в мультиплатформенности.
    Когда пишите на котлине под JVM, вы можете использовать весь набор Java коллекций. Картинка снизу какая-то не полная, как минимум на ней нет Map и MutableMap. Как максимум, раз уж у них java.util.HashSet реализует MutableSet, то и LinkedHashSet, TreeSet - тоже.
    Но вообще это не справедливо, если код компилируется под JS или Native.
    Ответ написан
  • Как работает нисходящее преобразование в Java?

    @koperagen
    При преобразованиях меняется только тип ссылки, которая ссылается на объект в памяти. Сам он навсегда остается того же типа, что при создании
    Ответ написан
  • Как стать Котлин разработчиком?

    @koperagen
    Смотря, что вы под этим понимаете. Не думаю, что можно стать "профессиональным котлин разработчиком". Это будет либо мобильная разработка, либо бэкенд. В теории можно и десктоп с фронтом пилить. Но ни в одном из этих случаев знания самого языка не будут решающими.
    Если абстрагироваться и от направлений, то всегда будет полезно знать хотя бы распространенные структуры данных, парадигмы (структурная, объектно-ориентированная, функциональная), паттерны, используемые в этих парадигмах, принципы проектирования (SOLID, KISS, YAGNI). Это и к языку не привязано.
    Дальше - работа с БД (SQL, NoSQL), HTTP, асинхронность (Coroutines как пример средства реализации асинхронности). Тут придется выбирать библиотеки, доступные для котлина и изучать их.
    Это все скорее всего встретится. Но можно под андроид начать приложения делать и с 0. Есть обучающие курсы, в которых все нужное расскажут. По остальным направлениям их меньше, но тоже достаточно. Для бэкенда отправная точка - ktor, для desktop - tornadofx.
    Java код вам наверняка придется читать, поэтому хотя бы поверхностно стоит изучить.
    Ответ написан