Forwarded from Типичный Сисадмин
Подписывайтесь на канал 👉@tipsysdmin
Автоупаковка - это механизм неявной инициализации объектов классов-оберток (
☕️ Автоупаковка происходит при прямом присваивании примитива классу-обертке (с помощью оператора =), либо при передаче примитива в параметры метода (типа класса-обертки).
☕️ Автоупаковке в классы-обертки могут быть подвергнуты как переменные примитивных типов, так и константы времени компиляции (литералы и final-примитивы). При этом литералы должны быть синтаксически корректными для инициализации переменной исходного примитивного типа.
☕️ Автоупаковка переменных примитивных типов требует точного соответствия типа исходного примитива типу класса-обертки. Например, попытка упаковать переменную типа byte в Short без предварительного явного приведения byte в short вызовет ошибку компиляции.
☕️ Автоупаковка констант примитивных типов допускает более широкие границы соответствия. В этом случае компилятор способен предварительно осуществлять неявное расширение/сужение типа примитивов:
☕️ неявное расширение/сужение исходного типа примитива до типа примитива, соответствующего классу-обертке (для преобразования int в Byte, сначала компилятор самостоятельно неявно сужает int к byte);
☕️ автоупаковку примитива в соответствующий класс-обертку. Однако в этом случае существуют два дополнительных ограничения: a) присвоение примитива обертке может производится только оператором = (нельзя передать такой примитив в параметры метода без явного приведения типов) b) тип левого операнда не должен быть старше чем Character, тип правого не должен старше, чем int: допустимо расширение/сужение byte в/из short, byte в/из char, short в/из char и только сужение byte из int, short из int, char из int. Все остальные варианты требуют явного приведения типов).
Дополнительной особенностью целочисленных классов-оберток, созданных автоупаковкой констант в диапазоне -128 ... +127 является то, что они кэшируются JVM. Поэтому такие обертки с одинаковыми значениями будут являться ссылками на один объект.
Byte, Short, Integer, Long, Float, Double, Character, Boolean
), значениями соответствующих им исходных примитивных типов (byte, short, int...
), без явного использования конструктора класса.☕️ Автоупаковка происходит при прямом присваивании примитива классу-обертке (с помощью оператора =), либо при передаче примитива в параметры метода (типа класса-обертки).
☕️ Автоупаковке в классы-обертки могут быть подвергнуты как переменные примитивных типов, так и константы времени компиляции (литералы и final-примитивы). При этом литералы должны быть синтаксически корректными для инициализации переменной исходного примитивного типа.
☕️ Автоупаковка переменных примитивных типов требует точного соответствия типа исходного примитива типу класса-обертки. Например, попытка упаковать переменную типа byte в Short без предварительного явного приведения byte в short вызовет ошибку компиляции.
☕️ Автоупаковка констант примитивных типов допускает более широкие границы соответствия. В этом случае компилятор способен предварительно осуществлять неявное расширение/сужение типа примитивов:
☕️ неявное расширение/сужение исходного типа примитива до типа примитива, соответствующего классу-обертке (для преобразования int в Byte, сначала компилятор самостоятельно неявно сужает int к byte);
☕️ автоупаковку примитива в соответствующий класс-обертку. Однако в этом случае существуют два дополнительных ограничения: a) присвоение примитива обертке может производится только оператором = (нельзя передать такой примитив в параметры метода без явного приведения типов) b) тип левого операнда не должен быть старше чем Character, тип правого не должен старше, чем int: допустимо расширение/сужение byte в/из short, byte в/из char, short в/из char и только сужение byte из int, short из int, char из int. Все остальные варианты требуют явного приведения типов).
Дополнительной особенностью целочисленных классов-оберток, созданных автоупаковкой констант в диапазоне -128 ... +127 является то, что они кэшируются JVM. Поэтому такие обертки с одинаковыми значениями будут являться ссылками на один объект.
👍5
Продолжаем следить за вакансиями на российском IT-рынке. Среди интересного: IBS набирает в команду тестировщиков и разработчиков.
Какие тестировщики нужны: инженеры по ручному, автоматизированному и нагрузочному тестированию. Требуется релевантный опыт от года, готовность работать фултайм, развиваться и строить карьеру.
Какие разработчики нужны: миддлы и сеньоры. Никакой работы «в стол» — все проекты уходят в промышленную эксплуатацию. Системы IBS работают в технологичных банках, ритейле и других крупных российских компаниях.
Что дают? Всё, что любим: быстрый рост, прозрачная система грейдов, классное руководство, высокий уровень дохода, соцпакет с ДМС, стоматологией и прочими бенефитами.
Подробнее о вакансиях
Какие тестировщики нужны: инженеры по ручному, автоматизированному и нагрузочному тестированию. Требуется релевантный опыт от года, готовность работать фултайм, развиваться и строить карьеру.
Какие разработчики нужны: миддлы и сеньоры. Никакой работы «в стол» — все проекты уходят в промышленную эксплуатацию. Системы IBS работают в технологичных банках, ритейле и других крупных российских компаниях.
Что дают? Всё, что любим: быстрый рост, прозрачная система грейдов, классное руководство, высокий уровень дохода, соцпакет с ДМС, стоматологией и прочими бенефитами.
Подробнее о вакансиях
Строковый метод equals()
Строковый метод equals() проверяет равенство двух строк в Java. equals() сравнивает содержимое каждой строки.
Если все символы совпадают, метод возвращает значение true. Если же какой-либо символ не совпадает – возвращает false.
Если же требуется сравнение без учета верхнего/нижнего регистров, можно воспользоваться .equalsIgnoreCase() .
Строковый метод equals() проверяет равенство двух строк в Java. equals() сравнивает содержимое каждой строки.
Если все символы совпадают, метод возвращает значение true. Если же какой-либо символ не совпадает – возвращает false.
Если же требуется сравнение без учета верхнего/нижнего регистров, можно воспользоваться .equalsIgnoreCase() .
Напишите потокобезопасную реализацию класса с неблокирующим методом BigInteger next(), который возвращает элементы последовательности: [1, 2, 4, 8, 16, ...].
class PowerOfTwo {
private AtomicReference<BigInteger> current = new AtomicReference<>(null);
BigInteger next() {
BigInteger recent, next;
do {
recent = current.get();
next = (recent == null) ? BigInteger.valueOf(1) : recent.shiftLeft(1);
} while (!current.compareAndSet(recent, next));
return next;
}
}
Jasypt: шифрование конфигурационных файлов spring-boot
В современном мире редко можно встретить приложение, которое не использует в своей работе внешние источники данных, будь то база данных или какой-нибудь сервис. Как правило, подобные внешние источники всегда защищены и требуют, как минимум, базовой аутентификации в виде логина и пароля. Принято логин и пароль хранить в properties файле приложения, но, если вы выложите подобный файл в общее хранилище (на гитхаб, к примеру), его все увидят...
Подробнее
В современном мире редко можно встретить приложение, которое не использует в своей работе внешние источники данных, будь то база данных или какой-нибудь сервис. Как правило, подобные внешние источники всегда защищены и требуют, как минимум, базовой аутентификации в виде логина и пароля. Принято логин и пароль хранить в properties файле приложения, но, если вы выложите подобный файл в общее хранилище (на гитхаб, к примеру), его все увидят...
Подробнее
👍4
Мы запускаем углубленный курс по Java для специалистов с опытом в промышленной разработке. Если вы работали с реляционными базами данных, Java фреймворками или хотите их освоить — добро пожаловать! 💫
Курс бесплатный и длится три месяца. Все занятия онлайн, так что можно проходить из любой точки России.
☝Обучение строится на кейсах из реальной практики. Будут лекции от ведущих разработчиков компании: поговорим про архитектуру и управление командой, расскажем про технологии, которые обеспечивают развитие большой компании.
Чтобы попасть на курс, нужно отправить заявку и сдать вступительные экзамены до 23 февраля. Занятия начнутся в марте. Лучших приглашаем на интервью в одну из команд в штат.
Подробная программа и форма для заявок здесь: https://l.tinkoff.ru/fintech_jvm_2022
Курс бесплатный и длится три месяца. Все занятия онлайн, так что можно проходить из любой точки России.
☝Обучение строится на кейсах из реальной практики. Будут лекции от ведущих разработчиков компании: поговорим про архитектуру и управление командой, расскажем про технологии, которые обеспечивают развитие большой компании.
Чтобы попасть на курс, нужно отправить заявку и сдать вступительные экзамены до 23 февраля. Занятия начнутся в марте. Лучших приглашаем на интервью в одну из команд в штат.
Подробная программа и форма для заявок здесь: https://l.tinkoff.ru/fintech_jvm_2022
👍1👏1
Learn to Program with Kotlin
Автор: Tim Lavers (2021)
Прочитав эту книгу, вы получите практические знания и код, которые помогут вам сразу же приступить к программированию на Kotlin для своих собственных проектов.
Чему вы научитесь
Изучать основы Kotlin с помощью IDE IntelliJ Java
Внедрять ООП с помощью Kotlin, а также модульное тестирование и рефакторинг кода с помощью серии проектов, связанных с текстом
Использовать функциональное программирование на Kotlin, создав библиотеку для обработки изображений.
Напишите программу для поиска и чтения знаков скорости на фотографиях.
Скачать книгу
Автор: Tim Lavers (2021)
Прочитав эту книгу, вы получите практические знания и код, которые помогут вам сразу же приступить к программированию на Kotlin для своих собственных проектов.
Чему вы научитесь
Изучать основы Kotlin с помощью IDE IntelliJ Java
Внедрять ООП с помощью Kotlin, а также модульное тестирование и рефакторинг кода с помощью серии проектов, связанных с текстом
Использовать функциональное программирование на Kotlin, создав библиотеку для обработки изображений.
Напишите программу для поиска и чтения знаков скорости на фотографиях.
Скачать книгу
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Освойте бэкенд-разработку на Java за 10 месяцев!
Профессия для тех, кто настроен серьезно: https://bit.ly/32zzMyP
Научим:
✔️Писать код на Java, использовать фреймворки Javalin, Spring
✔️Применять принципы ООП, работать с базами данным, SQL
✔️Настраивать окружение: IDEA, Gradle/Maven, JDK
✔️Пользоваться командной строкой и Git
Поможем:
✔️Наработать практику — вы сделаете 5 проектов на GitHub
✔️Грамотно оформить резюме
✔️Подготовиться к собеседованиям
А еще порекомендуем в хорошие компании и познакомим с сообществом из 26 тысяч айтишников. Присоединяйтесь!
Профессия для тех, кто настроен серьезно: https://bit.ly/32zzMyP
Научим:
✔️Писать код на Java, использовать фреймворки Javalin, Spring
✔️Применять принципы ООП, работать с базами данным, SQL
✔️Настраивать окружение: IDEA, Gradle/Maven, JDK
✔️Пользоваться командной строкой и Git
Поможем:
✔️Наработать практику — вы сделаете 5 проектов на GitHub
✔️Грамотно оформить резюме
✔️Подготовиться к собеседованиям
А еще порекомендуем в хорошие компании и познакомим с сообществом из 26 тысяч айтишников. Присоединяйтесь!
👍1
Java Programming
Автор: Joyce Farrell (2018)
Даже если вы начинающий программист, книга поможет вам быстро приступить к разработке полезных программ, при этом овладев основными принципами структурного и объектно-ориентированного программирования. Книга содержит уникальные, понятные для читателя объяснения и содержательные упражнения по программированию. Дополнительные цифровые учебные ресурсы в MindTap предоставляют интерактивные инструменты обучения, а также IDE (среда разработки) для отработки и развития ваших навыков.
Скачать книгу
Автор: Joyce Farrell (2018)
Даже если вы начинающий программист, книга поможет вам быстро приступить к разработке полезных программ, при этом овладев основными принципами структурного и объектно-ориентированного программирования. Книга содержит уникальные, понятные для читателя объяснения и содержательные упражнения по программированию. Дополнительные цифровые учебные ресурсы в MindTap предоставляют интерактивные инструменты обучения, а также IDE (среда разработки) для отработки и развития ваших навыков.
Скачать книгу
Java-Cheat-Sheet.pdf
2.5 MB
Шпаргалка по Java (Cheat Sheet)
java-cheat-sheet-comprehensive-guide.pdf
452.5 KB
Java cheat sheet comprehensive guide
Так как строки в Java являются неизменными, то ваш пароль в виде обычного текста будет доступен в памяти, пока сборщик мусора не очистит её. Любое изменение приведет к созданию новой строки.
А вот в случае с char[], вы можете заменить любой его элемент нулем или пустым символом.
А вот в случае с char[], вы можете заменить любой его элемент нулем или пустым символом.