Java

Зачем нужно ключевое слово default?

В ранних версиях Java с помощью этого служебного слова можно было объявлять значения по умолчанию. В восьмой версии было решено пополнить существующие интерфейсы современными методами. Но, для того, чтобы обеспечить совместимость со старыми версиями, было решено добавлять методы и отмечать…

Читать полностью

Что делает volatile?

Ключевое слово volatile применяют при разработке многопоточных приложений. Оно оказывает 2 эффекта. Во-первых, чтение или запись данных в поле, обозначенное этим модификатором, становится атомарным. Во-вторых, между пара связанных событий запись и чтение имеют отношение happens-before (то есть второе действие в…

Читать полностью

Что такое synchronized?

Synchronized – это служебное слово, с помощью которого можно запретить доступ к методу, помеченному как синхронный (Synchronized), на время пока его держит другой Synchronized поток. То есть одновременно могут выполняться не более одной части кода отмеченной служебным словом как Synchronized.…

Читать полностью

Чем отличаются checked и unchecked исключения?

С помощью этого вопроса проверяют знание иерархии классов, используемых для обработки исключений. Исключения checked требуется обрабатывать в блоке catсh. Исключения unchecked обрабатывать необязательно. Базовым в иерархии классов, предназначенных для обработки исключений, является Throwable. У него есть два наследника: error –…

Читать полностью

Какие бывают модификаторы в Java?

В Java определены такие модификаторы: private, protected, public – применяются для задания прав, относятся к разделу «Классы»; synchronized, volatile – нужны для управления многопоточностью; static – служит для привязки субъекта (обычно это переменная) не к конкретному экземпляру, а ко всему…

Читать полностью

Какие существуют литералы в Java?

Литерал – это набор символов, которая обозначает значение констант примитивных типов. Это: integer (целочисленный). Примеры: 324, 0хfb65, 0b10100; floating-point, float, double (с плавающей точкой). Примеры: 756.12, 0.8, 5.2е3; char (символы). Примеры: ‘d’, ‘\n’ (спецсимвол), ‘\u00F1’ (escape-последовательность); Строковый литерал. Пример –…

Читать полностью

Чем отличается final finally finalize?

Эти три служебных слова относятся к разным разделам языка Java. Метод finalise – это сборщик мусора, который вызывается Java машиной автоматически. При этом он не может быть вызван если есть ссылки на объект. Также виртуальная машина не может его вызвать…

Читать полностью

Как прочитать InputStream в строку?

Часто строковые данные попадают в приложение в виде потока, например, так читаются текстовые файлы, данные получаемые из сети, через сокет или ввод информации пользователем на клавиатуре. Поэтому удобнее обрабатывать их также в потоке. Обычно это делается в такой последовательности: заводится…

Читать полностью

Как разбить строку на слова?

В Java есть класс StringTokenizer, которые можно использовать для разбиения строк. Для него необходимо задать разделители, по которым строка будет разбита на «токены». Но он уже считается устаревшим и используется только для обратной совместимости. Сейчас рекомендуется использовать метод String.split(). В…

Читать полностью

Особенности работы класса Matcher

Класс Matcher предназначен для работы с регулярными выражениями. Матчер применяется на ко всей строке, а к предварительно установленному «региону». По умолчанию он совпадает со всей строкой. При необходимости его можно изменять. С помощью методов regionStart и regionEnd можно посмотреть установленные…

Читать полностью

Как применить регулярное выражение?

Для использования регулярных выражений в Java используется пакет java.util.regex, входящий в стандартную библиотеку. Основная работа выполняется с помощью методов класса Pattern. Фабричный метод Pattern.compile(“Регулярное выражение”) создаёт регулярное выражение, не привязывая его к тексту. Этот метод потокобезопасный и неизменяемый (иммутабельный). Чтобы…

Читать полностью

Из чего состоит String?

Ответ на этот вопрос зависит от версии Java. Во всех версиях есть два обязательных поля: массив char[] value, в котором хранятся символы строки и переменная int hash, в которой храниться хэш-сумма. В версиях Java младше 7 были поля offset и…

Читать полностью

Как обойти строчку?

В языке Java строки хранятся в кодировке UTF-8. В ней один символ храниться в code point, который может состоять из одного или двух значений char (то есть занимающих в памяти столько же места, сколько и одна переменная типа char). То…

Читать полностью

Какие бывают строковые классы?

Для работы со строками, в Java, кроме String, существуют ещё два класса: StringBuffer и StringBuilder. В отличие от String они реализуют паттерн строитель (Builder), и способны изменять строки без создания нового объекта. Эти два класса очень похожи друг на друга,…

Читать полностью

new String(«Hello_42») == «Hello_» + 42

Вопросы такого типа, о сравнении строковых и числовых констант, задают для проверки знаний о пуле строк (string pool) или, как его ещё называют пул литералов (literal pool). Он нужен для оптимизации использования компилятора. Если строка встречается несколько раз, то компилятор…

Читать полностью

toString

toString() – это public-метод, объявленный в классе Object, который вызывается автоматически, для преобразования объектов в текст. По умолчанию он возвращает строку «полное.имя.класса@хэш_В_Шестнадцатеричном_Виде» (это может выглядеть как «java.lang.Object@1c413d89»). Обратите внимание, что часть, идущая после @ — это не адрес в памяти.…

Читать полностью

Где у Java приложения точка входа?

Выполнение программ, написанных на Java, начинается со специального метода который называется main() и входит в главный класс. В качестве главного можно использовать не только обычный class, но и интерфейс, и даже перечисление enum. В JavaFX main класс должен реализовать интерфейс…

Читать полностью

Как нельзя называть переменные?

Если не учитывать стилистические, то технических три: Нельзя использовать зарезервированные в Java слова; Первый используемый символ обязан соответствовать Charactr.isJavaIdentiferStart(); Все символы, начиная со второго, обязаны соответствовать Charactr.isJavaIdentiferPart(). В общем случае имя может состоять из:  букв разных алфавитом и языков; специальных…

Читать полностью

Что такое Keyword?

Keyword – это заданная последовательность букв, цифр и символов, которую нельзя использовать для задания именования переменных, методов и всех остальных идентификаторов. Перечислим их: четыре зарезервированных слова, которые не относятся к ключевым: var, null, true, false; слова, отвечающие за логику работа…

Читать полностью

Есть ли в Java goto?

goto – это оператор безусловного перехода в любое место приложения. В данный момент все специалисты пришли к единому мнению, что его использование может внести путаницу, его использование вредно и опасно, к тому же без него, в современных языках высокого уровня,…

Читать полностью