Перейти к основному содержимому

182 записи с тегом "Основы Java"

Посмотреть все теги

· 3 мин. чтения

1. Обзор

В этом кратком руководстве мы узнаем об операторе Java XOR . Мы обсудим немного теории об операциях XOR , а затем посмотрим, как их реализовать в Java.

2. Оператор XOR

Начнем с напоминания о семантике операции XOR . Логическая операция XOR , исключающее или , принимает два логических операнда и возвращает значение true тогда и только тогда, когда операнды различны. И наоборот, он возвращает false, если два операнда имеют одинаковое значение.

Так, например, оператор XOR можно использовать, когда нам нужно проверить два условия, которые не могут быть истинными одновременно.

· 8 мин. чтения

1. Обзор

В этом руководстве мы познакомим вас с двумя тесно связанными между собой методами: equals() и hashCode() . Мы сосредоточимся на их отношениях друг с другом, на том, как правильно их переопределить и почему мы должны переопределять оба или ни то, ни другое.

2. равно()

Класс Object определяет оба метода equals() и hashCode() , что означает, что эти два метода неявно определены в каждом классе Java, включая те, которые мы создаем:

class Money {
int amount;
String currencyCode;
}

· 4 мин. чтения

1. Обзор

Иногда, когда мы запускаем программу Java, мы можем увидеть «Не удалось найти или загрузить основной класс». Нетрудно догадаться, в чем причина: JVM не смогла найти основной класс и выдала эту ошибку. Но почему нельзя?

В этом уроке мы обсудим вероятные причины невозможности найти основной класс. Мы также увидим, как их исправить.

2. Пример программы

· 6 мин. чтения

1. Обзор

В этом руководстве мы собираемся исследовать метод System.gc() , расположенный в пакете java.lang .

Явный вызов System.gc() известен как плохая практика. Давайте попробуем понять, почему и есть ли какие-либо варианты использования, когда вызов этого метода может быть полезен.

2. Сбор мусора

Виртуальная машина Java решает выполнить сборку мусора, когда есть признаки для этого. Эти указания отличаются от одной реализации GC к другой. Они основаны на разных эвристиках. Тем не менее, есть несколько моментов, когда GC будет выполнен точно:

· 4 мин. чтения

1. Обзор

В этой короткой статье мы кратко рассмотрим, как вызывать методы во время выполнения с помощью Java Reflection API .

2. Подготовка

Давайте создадим простой класс, который мы будем использовать в следующих примерах:

public class Operations {
public double publicSum(int a, double b) {
return a + b;
}

public static double publicStaticMultiply(float a, long b) {
return a * b;
}

private boolean privateAnd(boolean a, boolean b) {
return a && b;
}

protected int protectedMax(int a, int b) {
return a > b ? a : b;
}
}

· 11 мин. чтения

1. Введение в загрузчики классов

Загрузчики классов отвечают за динамическую загрузку классов Java в JVM (виртуальную машину Java) во время выполнения. Они также являются частью JRE (Java Runtime Environment). Следовательно, JVM не нужно знать о базовых файлах или файловых системах для запуска программ Java благодаря загрузчикам классов.

Кроме того, эти классы Java загружаются в память не сразу, а тогда, когда они требуются приложению. Здесь на помощь приходят загрузчики классов. Они отвечают за загрузку классов в память.

В этом руководстве мы поговорим о различных типах встроенных загрузчиков классов и о том, как они работают. Затем мы представим нашу собственную реализацию.

2. Типы встроенных загрузчиков классов

· 14 мин. чтения

1. Обзор

В этом уроке мы обсудим основы кодирования символов и то, как мы справляемся с этим в Java.

2. Важность кодировки символов

Нам часто приходится иметь дело с текстами, принадлежащими к разным языкам, с разными шрифтами, такими как латынь или арабский. Каждый символ в каждом языке должен каким-то образом сопоставляться с набором единиц и нулей. Действительно, удивительно, что компьютеры могут правильно обрабатывать все наши языки.

Чтобы сделать это правильно, нам нужно подумать о кодировке символов. Невыполнение этого требования часто может привести к потере данных и даже к уязвимостям в системе безопасности.

· 5 мин. чтения

1. Обзор

В этом руководстве мы узнаем, как Java работает с конструкторами , и рассмотрим некоторые связанные с ними правила из Спецификации языка Java .

2. Объявления конструктора

В Java каждый класс должен иметь конструктор. Его структура похожа на метод, но у него другие цели.

Посмотрим спецификацию конструктора:

· 5 мин. чтения

1. Обзор

При преобразовании Java String в double мы обычно используем метод Double.parseDouble (String value) . Этот метод позволяет нам преобразовать строковое представление данного двойного числа — например, «2.0» — в примитивное двойное значение.

Как и в случае с большинством вызовов методов, рекомендуется избегать передачи нулевой ссылки, которая, скорее всего, приведет к исключению NullPointerException во время выполнения.

В этом руководстве мы рассмотрим несколько способов проверки на null перед вызовом Double.parseDouble . Мы начнем с рассмотрения решений, использующих ядро Java, прежде чем рассматривать некоторые внешние библиотеки.

2. Зачем проверять

· 3 мин. чтения

1. Обзор

В этом кратком руководстве мы узнаем, как записать поток ввода Java в поток вывода Java `` . Сначала мы будем использовать базовую функциональность из Java 8 и Java 9. Затем мы рассмотрим пару внешних библиотек — Guava и библиотеку ввода-вывода Apache Commons .

Служебные методы, предоставляемые Java 9, Guava и Apache Commons IO, не очищают и не закрывают потоки. Итак, нам нужно будет управлять этими ресурсами, используя блок try-with-resources или finally .

2. Использование Java 8

Во-первых, мы начнем с создания простого метода с использованием vanilla Java для копирования содержимого из InputStream в OutputStream :