FileOutputStream vs. FileWriter
Запись файлов на Java осуществляется двумя способами: FileOutputStream и FileWriter. Какой именно метод выбрать, зависит от конкретной задачи.
FileOutputStream предназначен для записи потоков необработанных байтов. Это делает его идеальным решением для работы, например, с изображениями.
У FileWriter другое призвание: работа с потоками символов. Так что если вы пишете текстовые файлы, выбирайте этот метод.
@java_geek
Запись файлов на Java осуществляется двумя способами: FileOutputStream и FileWriter. Какой именно метод выбрать, зависит от конкретной задачи.
FileOutputStream предназначен для записи потоков необработанных байтов. Это делает его идеальным решением для работы, например, с изображениями.
У FileWriter другое призвание: работа с потоками символов. Так что если вы пишете текстовые файлы, выбирайте этот метод.
@java_geek
❤1
Содержит ли массив указанный элемент
Для этого используем прием с представлением массива в виде коллекции и вызовом привычного метода contains().
@java_geek
Для этого используем прием с представлением массива в виде коллекции и вызовом привычного метода contains().
@java_geek
❤3👍1
Пустая коллекция вместо Null
Если ваша программа может возвращать коллекцию, которая не содержит ни одного значения, убедитесь, что возвращена именно пустая коллекция, а не Null. Это сэкономит вам время на различные проверки.
@java_geek
Если ваша программа может возвращать коллекцию, которая не содержит ни одного значения, убедитесь, что возвращена именно пустая коллекция, а не Null. Это сэкономит вам время на различные проверки.
@java_geek
👍2👎1
Создание объектов только при необходимости
Создание объектов – одна из самых затратных операций в Java. Лучшая практика – создавать их только при необходимости, когда они действительно нужны.
@java_geek
Создание объектов – одна из самых затратных операций в Java. Лучшая практика – создавать их только при необходимости, когда они действительно нужны.
@java_geek
👍2👎2❤1
Объединение двух массивов
Наиболее лаконичный способ объединить элементы двух массивов – это воспользоваться классом ArrayUtils из Commons Lang.
@java_geek
Наиболее лаконичный способ объединить элементы двух массивов – это воспользоваться классом ArrayUtils из Commons Lang.
@java_geek
🔥5❤1
Содержимое директории
Java позволяет вам получать имена всех подкаталогов и файлов в папке в виде массива, который затем можно последовательно прочитать.
@java_geek
Java позволяет вам получать имена всех подкаталогов и файлов в папке в виде массива, который затем можно последовательно прочитать.
@java_geek
👍3
Отправка email
Отправить электронную почту на Java очень просто. Вам просто нужно установить Java Mail и указать путь к нему в пути к классам проекта.
@java_geek
Отправить электронную почту на Java очень просто. Вам просто нужно установить Java Mail и указать путь к нему в пути к классам проекта.
@java_geek
👍6
Удаление элемента массива
Использовать этот метод действительно просто. Мы просто предоставляем ему массив, из которого мы хотели бы удалить элемент, и его индекс.
@java_geek
Использовать этот метод действительно просто. Мы просто предоставляем ему массив, из которого мы хотели бы удалить элемент, и его индекс.
@java_geek
👍3
Захват координат курсора
Чтобы захватить события мыши, необходимо реализовать интерфейс MouseMotionListener. Когда курсор попадает в определенную область, срабатывает обработчик события mouseMoved, из которого можно получить точные координаты.
@java_geek
Чтобы захватить события мыши, необходимо реализовать интерфейс MouseMotionListener. Когда курсор попадает в определенную область, срабатывает обработчик события mouseMoved, из которого можно получить точные координаты.
@java_geek
🔥1
Метод valueOf()
Метод valueOf() возвращает соответствующий числовой объект, содержащий значение переданного аргумента, простыми словами — преобразует в нужный тип данных. Аргумент можно преобразовать в int, double, float и другие типы данных, например, можно преобразовать строку в число.
Метод valueOf() в Java является статическим. Он может принимать два аргумента, где один является строкой и другой является системой счисления.
@java_geek
Метод valueOf() возвращает соответствующий числовой объект, содержащий значение переданного аргумента, простыми словами — преобразует в нужный тип данных. Аргумент можно преобразовать в int, double, float и другие типы данных, например, можно преобразовать строку в число.
Метод valueOf() в Java является статическим. Он может принимать два аргумента, где один является строкой и другой является системой счисления.
@java_geek
Переопределение (overriding)
В терминах ООП переопределение значит перезапись функционала существующего метода. Если класс наследует метод из своего суперкласса, тогда есть шанс переопределить взятый метод, если он не помечен final.
Преимущество в Java переопределения заключается в том, что оно позволяет определять (описывать) поведение, характерное для типа подкласса, значит подкласс может реализовать метод родительского класса на основе своих требований.
В примере вы можете заметить, что b хоть и является типом Animal, оно запускает метод move в классе Dog. Причина тому такая, что во время компиляции проходит проверка ссылочного типа. Но во время выполнения JVM определяет тип объекта и запускает метод, который принадлежит этому конкретному объекту.
Следовательно, программа запустится правильно, так как класс Animal имеет метод move. Затем, во время выполнения, он запускает метод, принадлежащий этому объекту.
@java_geek
В терминах ООП переопределение значит перезапись функционала существующего метода. Если класс наследует метод из своего суперкласса, тогда есть шанс переопределить взятый метод, если он не помечен final.
Преимущество в Java переопределения заключается в том, что оно позволяет определять (описывать) поведение, характерное для типа подкласса, значит подкласс может реализовать метод родительского класса на основе своих требований.
В примере вы можете заметить, что b хоть и является типом Animal, оно запускает метод move в классе Dog. Причина тому такая, что во время компиляции проходит проверка ссылочного типа. Но во время выполнения JVM определяет тип объекта и запускает метод, который принадлежит этому конкретному объекту.
Следовательно, программа запустится правильно, так как класс Animal имеет метод move. Затем, во время выполнения, он запускает метод, принадлежащий этому объекту.
@java_geek
Почему в некоторых интерфейсах вообще не определяют методов?
Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу.
Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
@java_geek
Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу.
Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
@java_geek
Валидация даты из строки
Если необходимо достать объект Date из обычной строки в Java, можете использовать небольшой утилитный класс, который приведен выше. Он позаботится обо всех сложностях валидации и преобразовании строки в объект Date.
@java_geek
Если необходимо достать объект Date из обычной строки в Java, можете использовать небольшой утилитный класс, который приведен выше. Он позаботится обо всех сложностях валидации и преобразовании строки в объект Date.
@java_geek
❤3👍3
Метод Math.ceil()
Метод дает целое число с нулевой дробной частью, ближайшее к числу аргумента справа, другими словами — округляет дробь в большую сторону. Возвращается переменная типа double.
@java_geek
Метод дает целое число с нулевой дробной частью, ближайшее к числу аргумента справа, другими словами — округляет дробь в большую сторону. Возвращается переменная типа double.
@java_geek
Получение обратного массива
Используем библиотеку Apache Commons Lang.
Библиотека Apache Commons Lang представляет собой набор служебных классов для упрощения работы с классами пакета java.lang.*.
@java_geek
Используем библиотеку Apache Commons Lang.
Библиотека Apache Commons Lang представляет собой набор служебных классов для упрощения работы с классами пакета java.lang.*.
@java_geek
Могут ли нестатические методы перегрузить статические?
Да. В итоге получится два разных метода. Статический будет принадлежать классу и будет доступен через его имя, а нестатический будет принадлежать конкретному объекту и доступен через вызов метода этого объекта.
@java_geek
Да. В итоге получится два разных метода. Статический будет принадлежать классу и будет доступен через его имя, а нестатический будет принадлежать конкретному объекту и доступен через вызов метода этого объекта.
@java_geek
👍1
Метод Character.isWhitespace()
Метод определяет в Java, является ли указанное значение типа char пустым пространством, которое включает в себя пробел, табуляцию или новую строку.
@java_geek
Метод определяет в Java, является ли указанное значение типа char пустым пространством, которое включает в себя пробел, табуляцию или новую строку.
@java_geek
👍1
К каким конструкциям Java применим модификатор static?
• полям;
• методам;
• вложенным классам;
• членам секции import.
@java_geek
• полям;
• методам;
• вложенным классам;
• членам секции import.
@java_geek
👍5
Популярные ошибки начинающих Java программистов
Часто начинающие Java программисты ошибаются в попытке удалить элемент во время обхода списка.
Рассмотрим пример кода, в котором происходит попытка удалить элемент во время обхода элементов списка(#неверно на картинке).
В ходе выполнения этого кода будет выброшено
Удалять элементы безопасно можно только при использовании интерфейса Iterator(см #верно на картинке).
@java_geek
Часто начинающие Java программисты ошибаются в попытке удалить элемент во время обхода списка.
Рассмотрим пример кода, в котором происходит попытка удалить элемент во время обхода элементов списка(#неверно на картинке).
В ходе выполнения этого кода будет выброшено
ConcurrentModificationException
, так как нельзя удалять элементы во время итерирования по списку. Такая же ситуация будет и с for-each циклом.Удалять элементы безопасно можно только при использовании интерфейса Iterator(см #верно на картинке).
@java_geek
👍6🎄3
Сравнение Iterator и ListIterator
• ListIterator расширяет интерфейс Iterator
• ListIterator может быть использован только для перебора элементов коллекции List;
• Iterator позволяет перебирать элементы только в одном направлении, при помощи метода next(). Тогда как ListIterator позволяет перебирать список в обоих направлениях, при помощи методов next() и previous();
• ListIterator не указывает на конкретный элемент: его текущая позиция располагается между элементами, которые возвращают методы previous() и next().
• При помощи ListIterator вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add() и remove(). Iterator не поддерживает данного функционала.
@java_geek
• ListIterator расширяет интерфейс Iterator
• ListIterator может быть использован только для перебора элементов коллекции List;
• Iterator позволяет перебирать элементы только в одном направлении, при помощи метода next(). Тогда как ListIterator позволяет перебирать список в обоих направлениях, при помощи методов next() и previous();
• ListIterator не указывает на конкретный элемент: его текущая позиция располагается между элементами, которые возвращают методы previous() и next().
• При помощи ListIterator вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add() и remove(). Iterator не поддерживает данного функционала.
@java_geek