fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Java Geek

Java Geek

رفتن به کانال در Telegram

Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах. По всем вопросам @evgenycarter

نمایش بیشتر
2 353
مشترکین
-124 ساعت
اطلاعاتی وجود ندارد7 روز
-1530 روز
آرشیو پست ها
Меняем местами две переменные в одной строке Многие знают, что в Python можно красиво поменять значения переменных в одну стр
Меняем местами две переменные в одной строке Многие знают, что в Python можно красиво поменять значения переменных в одну строку: a, b = b, a Можно ли что-то похожее сделать в Java? Да. На картинке показан пример, но в реальных проектах так делать не стоит. @java_geek

Почему нельзя объявить метод интерфейса с модификатором final? В случае интерфейсов указание модификатора final бессмысленно, т.к. все методы интерфейсов неявно объявляются как абстрактные, т.е. их невозможно выполнить, не реализовав где-то еще, а этого нельзя будет сделать, если у метода идентификатор final. @java_geek

Способы чтения ввода с консоли в Java В Java существует четыре различных способа чтения ввода от пользователя в среде командн
Способы чтения ввода с консоли в Java В Java существует четыре различных способа чтения ввода от пользователя в среде командной строки (из консоли). Рассмотрим один из них - использование класса Buffered Reader. Это классический метод ввода данных в Java, представленный в JDK 1.0. Этот метод используется путем обертывания System .in (стандартный поток ввода) в InputStreamReader, который обернут в BufferedReader. @java_geek

Можно ли объявить метод абстрактным и статическим одновременно? Нет. В таком случае компилятор выдаст ошибку: "Illegal combination of modifiers: ‘abstract’ and ‘static’". Модификатор abstract говорит, что метод будет реализован в другом классе, а static наоборот указывает, что этот метод будет доступен по имени класса. @java_geek

Может ли объект получить доступ к члену класса, объявленному как private? Если да, то каким образом? • Внутри класса доступ к
Может ли объект получить доступ к члену класса, объявленному как private? Если да, то каким образом? • Внутри класса доступ к приватной переменной открыт без ограничений; • Вложенный класс имеет полный доступ ко всем (в том числе и приватным) членам содержащего его класса; • Доступ к приватным переменным извне может быть организован через отличные от приватных методов, которые предоставлены разработчиком класса. Например: getX() и setX(). • Через механизм рефлексии (Reflection API). @java_geek

Что такое «ссылка на метод»? Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде: ☕️ имя_класса::имя_статического_метода для статического метода; ☕️ объект_класса::имя_метода для метода экземпляра; ☕️ название_класса::new для конструктора. Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод. Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод. @java_geek

Внутренние классы (нестатические вложенные классы) Внутренние классы — это механизм безопасности в Java. Создать такой класс
Внутренние классы (нестатические вложенные классы) Внутренние классы — это механизм безопасности в Java. Создать такой класс довольно просто — нужно написать класс внутри класса. Внутренний класс может быть закрытым (private), и после того, как Вы объявляете внутренний класс закрытым, он не может быть доступен из объекта вне класса. На картинке Outer_Demo – внешний класс, Inner_Demo – внутренний класс, display_Inner() – метод, внутри которого мы создаем внутренний класс, и этот метод вызывается из основного метода. @java_geek

Метод compareTo() В Java метод compareTo() получает значение 0, если аргумент является строкой лексически равной данной строк
Метод compareTo() В Java метод compareTo() получает значение 0, если аргумент является строкой лексически равной данной строке; значение меньше 0, если аргумент является строкой лексически большей, чем сравниваемая строка; и значение больше 0, если аргумент является строкой лексически меньшей этой строки. @java_geek

Что такое модификаторы доступа? Модификаторы доступа — это инструмент, при помощи которого можно настроить доступ к классам, методам и переменным. Бывают следующие модификаторы, упорядоченные в порядке повышения доступа: 1) private — используется для методов, полей и конструкторов. Уровень доступа — только класс, внутри которого он объявлен. 2) package-private(default) — может использоваться для классов. Доступ только в конкретном пакете (package), в котором объявлен класс, метод, переменная, конструктор. 3) protected — такой же доступ, как и package-private + для тех классов, которые наследуются от класса с модификатором protected. 4) public — используется и для классов. Полноценный доступ во всем приложении. @java_geek

Что такое volatile переменная? Ключевое слово volatile используется в многопоточном программировании для обеспечения безопасности потока, поскольку модификация одной изменяемой переменной видна всем другим потокам, поэтому одна переменная может использоваться одним потоком за раз. При помощи ключевого слова volatile можно гарантировать, что переменная будет потокобезопасна и будет храниться в общей памяти, и потоки не будут ее брать себе в свой кеш. Как это выглядит? private volatile AtomicInteger count; Просто добавляем к переменной volatile. Но это не говорит о полной потокобезопасности… Ведь операции могут быть не атомарны над переменной. Но можно использовать Atomic классы, которые делают операцию атомарно, то есть за одно выполнение процессором. Таких классов можно много найти в пакете java.util.concurrent.atomic. @java_geek

JSON, сериализация JSON – невероятно удобный и полезный синтаксис для хранения и обмена данными. Java полностью поддерживает
JSON, сериализация JSON – невероятно удобный и полезный синтаксис для хранения и обмена данными. Java полностью поддерживает его. В данном примере кода рассмотрим пример сериализации данных. @java_geek

Какие преимущества есть у многопоточности? 1) Многопоточность позволяет приложению / программе всегда реагировать на ввод, даже если она уже выполняется с некоторыми фоновыми задачами; 2) Многопоточность позволяет быстрее выполнять задачи, поскольку потоки выполняются независимо; 3) Многопоточность обеспечивает лучшее использование кэш-памяти, поскольку потоки разделяют общие ресурсы памяти; 4) Многопоточность уменьшает количество требуемого сервера, поскольку один сервер может одновременно выполнять несколько потоков. @java_geek

Где и для чего используется модификатор abstract? Класс, помеченный модификатором abstract, называется абстрактным классом. Такие классы могут выступать только предками для других классов. Создавать экземпляры самого абстрактного класса не разрешается. При этом наследниками абстрактного класса могут быть как другие абстрактные классы, так и классы, допускающие создание объектов. Метод, помеченный ключевым словом abstract - абстрактный метод, т.е. метод, который не имеет реализации. Если в классе присутствует хотя бы один абстрактный метод, то весь класс должен быть объявлен абстрактным. Использование абстрактных классов и методов позволяет описать некий шаблон объекта, который должен быть реализован в других классах. В них же самих описывается лишь некое общее для всех потомков поведение. @java_geek

Быстрое умножение или деление на 2 Умножение на 2 означает сдвиг всех битов влево, а деление на 2 означает сдвиг вправо. Напр
Быстрое умножение или деление на 2 Умножение на 2 означает сдвиг всех битов влево, а деление на 2 означает сдвиг вправо. Например: 2 (Двоичный 10): сдвиг влево(умножение) дает 4 (Двоичный 100) и вправо(деление) дает 1 (Двоичный 1). @java_geek

Вычисление количества цифр числа Чтобы вычислить количество цифр в числе, вместо цикла мы можем эффективно использовать log.
Вычисление количества цифр числа Чтобы вычислить количество цифр в числе, вместо цикла мы можем эффективно использовать log. @java_geek

Что такое переопределение (overriding) методов? Переопределение методов происходит, когда child хочет изменить поведение parent класса. Если нужно, чтоб выполнилось-таки то, что есть в методе parent, можно использовать в child конструкцию вида super.methodName(), что выполнит работу parent метода, а уже потом добавить логику. Требования, которые нужно соблюдать: • сигнатура метода должна быть такая же; • возвращаемое значение должно быть таким же. @java_geek

Какими значениями инициализируются переменные по умолчанию? • Числа инициализируются 0 или 0.0; • char — \u0000; • boolean — false; • Объекты (в том числе String) — null. @java_geek

Перегрузка в Java Рассмотрим работу перегрузки методов в Java. Что, если передавать в функцию аргумент, который не вполне соо
Перегрузка в Java Рассмотрим работу перегрузки методов в Java. Что, если передавать в функцию аргумент, который не вполне соответствует определенным нами аргументам по типу? На этом этапе возможны два исхода. 1. Произойдет преобразование типа, но в более высокий тип (с точки зрения диапазона) в том же семействе. 2. Произойдет преобразование типа в следующее более старшее семейство (предположим, что если нет типа данных long, доступного для типа данных int, тогда будет поиск типа данных с плавающей запятой). @java_geek

Какая разница между процессом и потоком? Существуют следующие различия между процессом и потоком: 1) Программа в исполнении называется процессом, тогда как Поток является подмножеством процесса. 2) Процессы независимы, тогда как потоки являются подмножеством процесса. 3) Процессы имеют различное адресное пространство в памяти, в то время как потоки содержат общее адресное пространство. 4) Переключение контекста происходит быстрее между потоками по сравнению с процессами. 5) Межпроцессное взаимодействие медленнее и дороже, чем межпотоковое взаимодействие. 6) Любые изменения в родительском процессе не влияют на дочерний процесс, тогда как изменения в родительском потоке могут влиять на дочерний поток. @java_geek

Как написать immutable класс? Чтоб написать immutable неизменяемый класс, нужно следовать простым пунктам: • сделать класс фи
Как написать immutable класс? Чтоб написать immutable неизменяемый класс, нужно следовать простым пунктам: • сделать класс финальным. • сделать все поля приватными и создать только геттеры к ним. Сеттеры, разумеется, не нужно. • Сделать все mutable поля final, чтобы установить значение можно было только один раз. • инициализировать все поля через конструктор, выполняя глубокое копирование (то есть, копируя и сам объект, и его переменные, и переменные переменных, и так далее) • клонировать объекты mutable переменных в геттерах, чтобы возвращать только копии значений, а не ссылки на актуальные объекты. @java_geek