ch
Feedback
Java Geek

Java Geek

前往频道在 Telegram

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

显示更多
2 447
订阅者
无数据24 小时
+27
+530
帖子存档
Что такое тернарный оператор выбора? Тернарный условный оператор ?: - оператор, которым можно заменить некоторые конструкции операторов if-then-else. Выражение записывается в следующей форме: условие ? выражение 1 : выражение 2 Если условие выполняется, то вычисляется выражение 1 и его результат становится результатом выполнения всего оператора. Если же условие равно false, то вычисляется выражение 2 и его значение становится результатом работы оператора. Оба операнда выражение 1 и выражение 2 должны возвращать значение одинакового (или совместимого) типа. @java_geek

Ключевое слово instanceof в Java и его применения instanceof — это ключевое слово, которое используется для проверки того, со
Ключевое слово instanceof в Java и его применения instanceof — это ключевое слово, которое используется для проверки того, содержит ли ссылочная переменная объектную ссылку данного типа или нет. Чтобы лучше понять его суть, предлагаю обратиться к примеру кода. @java_geek

Как получить доступ к переопределенным методам родительского класса? С помощью ключевого слова super мы можем обратиться к любому члену родительского класса - методу или полю, если они не определены с модификатором private. @java_geek

Класс Java.io.OutputStream в Java Этот абстрактный класс является суперклассом всех классов, представляющих выходной поток ба
Класс Java.io.OutputStream в Java Этот абстрактный класс является суперклассом всех классов, представляющих выходной поток байтов. Output-поток принимает байты и отправляет их в какой-то приемник. Приложения, которым необходимо определить подкласс OutputStream, всегда должны предоставлять по крайней мере метод, который записывает один байт вывода. @java_geek

Какие классы и интерфейсы доступны в Collection фреймворке? Интерфейсы: • Collection; • List; • Set; • Map; • Sorted Set; • Sorted Map; • Queue. Классы: • Lists(ArrayList, LinkedList, Vector(deprecated)) • Sets(HashSet, LinkedHashSet, TreeSet) • Maps(HashMap, TreeMap, HashTable (deprecated), LinkedHashMap) • Queue(Priority Queue) @java_geek

Меняем местами две переменные в одной строке Многие знают, что в 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