Java for Beginner
672 subscribers
541 photos
155 videos
12 files
827 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Что выведет код?

public class ComparisonOperatorsExample {
public static void main(String[] args) {
int x = 5;
int y = 10;
int z = 15;

boolean result1 = (x < y) && (y < z);
boolean result2 = (x > y) || (y < z);
boolean result3 = !(z <= x);
boolean result4 = (x + y) == z;
boolean result5 = (z - x) != y;

System.out.println(result1 + " " + result2 + " " + result3 + " " + result4 + " " + result5);
}
}


#Tasks
Подписывайтесь на канал, научим быть причиной🪲

https://t.me/Java_for_beginner_dev

#Mems
Map, HashMap, TreeMap

Map

Map — это интерфейс в Java, представляющий коллекцию пар "ключ-значение". Map не допускает дублирование ключей, но позволяет дублирование значений. Основные реализации интерфейса Map включают HashMap и TreeMap.

Основные реализации интерфейса Map:

HashMap
TreeMap
LinkedHashMap (реализует упорядоченный по порядку добавления Map)
Hashtable (устаревшая, но синхронизированная версия Map)
HashMap


HashMap — это класс, реализующий интерфейс Map, основанный на хеш-таблице. Он не гарантирует упорядоченность ключей и допускает null значения для ключей и значений.

Основные характеристики HashMap:

Неупорядоченность: Порядок ключей не гарантируется и может изменяться.
Эффективность: Основные операции (вставка, удаление, получение) выполняются за постоянное время (O(1)).
Уникальность ключей: Не допускает дублирование ключей.


Основные методы HashMap:

Создание HashMap:
Map<String, Integer> hashMap = new HashMap<>();


Добавление пар ключ-значение:
hashMap.put("Apple", 1);
hashMap.put("Banana", 2);
hashMap.put("Orange", 3);


Получение значения по ключу:
 
int value = hashMap.get("Apple"); // 1


Удаление пары по ключу:
hashMap.remove("Banana");


Проверка наличия ключа:
boolean containsKey = hashMap.containsKey("Apple"); // true


Размер карты:
int size = hashMap.size(); // 2


Перебор пар ключ-значение:
for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}


TreeMap

TreeMap — это класс, реализующий интерфейс Map, основанный на красно-черном дереве. Он гарантирует естественный порядок ключей или порядок, заданный компаратором.

Основные характеристики TreeMap:

Упорядоченность: Ключи хранятся в отсортированном порядке.
Эффективность: Основные операции (вставка, удаление, получение) выполняются за логарифмическое время (O(log n)).
Уникальность ключей: Не допускает дублирование ключей.


Основные методы TreeMap:

Создание TreeMap:
Map<String, Integer> treeMap = new TreeMap<>();


Добавление пар ключ-значение:
treeMap.put("Apple", 1);
treeMap.put("Banana", 2);
treeMap.put("Orange", 3);


Получение значения по ключу:
int value = treeMap.get("Apple"); // 1


Удаление пары по ключу:
treeMap.remove("Banana");


Проверка наличия ключа:
boolean containsKey = treeMap.containsKey("Apple"); // true


Размер карты:
int size = treeMap.size(); // 2


Перебор пар ключ-значение:
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}


Получение первого и последнего ключа:
String firstKey = treeMap.firstKey(); // "Apple"
String lastKey = treeMap.lastKey(); // "Orange"


Подкарты:
SortedMap<String, Integer> subMap = treeMap.subMap("Apple", "Orange");


Сравнение HashMap и TreeMap

Структура данных:

HashMap основан на хеш-таблице.
TreeMap основан на красно-черном дереве.


Упорядоченность:

HashMap не гарантирует упорядоченности ключей.
TreeMap хранит ключи в отсортированном порядке.


Эффективность:

HashMap выполняет основные операции за постоянное время (O(1)).
TreeMap выполняет основные операции за логарифмическое время (O(log n)).


Использование памяти:

HashMap обычно использует меньше памяти, так как не хранит информацию о порядке ключей.
TreeMap использует больше памяти из-за хранения информации о порядке.


#Java #Training #Collections
Введение в I/O (Input/Output)

I/O (Input/Output) в Java — это операции ввода и вывода, которые позволяют программам взаимодействовать с внешними источниками данных, такими как файлы, консоль, сети и другие. Java предоставляет мощный и гибкий API для работы с I/O через пакеты java.io и java.nio.

Ключевые концепции I/O

Потоки (Streams)

Потоки в Java представляют собой абстракцию для чтения и записи данных.
Существует два основных типа потоков: байтовые (работают с байтами) и символьные (работают с символами).


Байтовые потоки (Byte Streams)

Используются для работы с бинарными данными.
Основные классы: InputStream и OutputStream.


Символьные потоки (Character Streams)

Используются для работы с текстовыми данными.
Основные классы: Reader и Writer.


Байтовые потоки

Байтовые потоки предназначены для работы с байтами. Они полезны для чтения и записи бинарных данных, таких как изображения и аудиофайлы.

Основные байтовые потоки:

InputStream: абстрактный класс для чтения байтов.
FileInputStream: читает данные из файла.
ByteArrayInputStream: читает данные из массива байтов.
BufferedInputStream: читает данные с буферизацией, что повышает производительность.


OutputStream: абстрактный класс для записи байтов.
FileOutputStream: записывает данные в файл.
ByteArrayOutputStream: записывает данные в массив байтов.
BufferedOutputStream: записывает данные с буферизацией, что повышает производительность.


Пример работы с байтовыми потоками:
// Чтение из файла
try (FileInputStream fis = new FileInputStream("input.txt")) {
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}

// Запись в файл
try (FileOutputStream fos = new FileOutputStream("output.txt")) {
String text = "Hello, World!";
fos.write(text.getBytes());
} catch (IOException e) {
e.printStackTrace();
}


Символьные потоки

Символьные потоки предназначены для работы с текстовыми данными. Они полезны для чтения и записи текстовых файлов.

Основные символьные потоки:

Reader: абстрактный класс для чтения символов.

FileReader: читает данные из текстового файла.
CharArrayReader: читает данные из массива символов.
BufferedReader: читает данные с буферизацией, что повышает производительность.


Writer: абстрактный класс для записи символов.

FileWriter: записывает данные в текстовый файл.
CharArrayWriter: записывает данные в массив символов.
BufferedWriter: записывает данные с буферизацией, что повышает производительность.


Пример работы с символьными потоками:
// Чтение из файла
try (BufferedReader br = new BufferedReader(new FileReader("input.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}

// Запись в файл
try (BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {
String text = "Hello, World!";
bw.write(text);
} catch (IOException e) {
e.printStackTrace();
}


#Java #Training #IO
Что выведет код?

import java.util.*;

public class ListExample {
public static void main(String[] args) {
List<String> items = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
items.add("E");
items.add(2, "F");
items.remove(1);
items.set(3, "G");
Collections.sort(items, Collections.reverseOrder());

System.out.println(items);
}
}


#Tasks
Подписывайтесь на канал, мы затянем Вас на темную сторону ☑️

https://t.me/Java_for_beginner_dev

#Mems
Классы File и Path

Классы File и Path являются основными средствами для работы с файловой системой в Java. Они предоставляют методы для создания, удаления, получения информации о файлах и директориях, а также для навигации по файловой системе.

Класс File

File — это класс, который представляет файл или директорию в файловой системе. Он предоставляет методы для выполнения различных операций с файлами и директориями.

Основные методы класса File:

Создание объекта File:
File file = new File("example.txt");


Проверка существования файла:
boolean exists = file.exists();


Создание нового файла:
boolean created = file.createNewFile();


Удаление файла:
boolean deleted = file.delete();


Получение имени файла:
String name = file.getName();


Получение пути файла:
String path = file.getPath();


Получение абсолютного пути файла:
String absolutePath = file.getAbsolutePath();


Проверка, является ли объект директорией:
boolean isDirectory = file.isDirectory();


Список файлов в директории:
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f.getName());
}


Пример работы с классом File:
File file = new File("example.txt");

// Проверка существования файла
if (!file.exists()) {
// Создание нового файла
try {
boolean created = file.createNewFile();
if (created) {
System.out.println("File created successfully.");
}
} catch (IOException e) {
e.printStackTrace();
}
}

// Получение информации о файле
System.out.println("File name: " + file.getName());
System.out.println("File path: " + file.getPath());
System.out.println("Absolute path: " + file.getAbsolutePath());
System.out.println("Is directory: " + file.isDirectory());

// Удаление файла
boolean deleted = file.delete();
if (deleted) {
System.out.println("File deleted successfully.");
}


Класс Path

Path — это интерфейс в пакете java.nio.file, представляющий путь в файловой системе. Класс Paths предоставляет статические методы для создания экземпляров Path.

Основные методы класса Path:

Создание объекта Path:
Path path = Paths.get("example.txt");


Получение имени файла:
Path fileName = path.getFileName();


Получение родительского пути:
Path parent = path.getParent();


Получение корневого элемента пути:
Path root = path.getRoot();


Проверка существования файла:
boolean exists = Files.exists(path);


Создание нового файла:

Files.createFile(path);


Удаление файла:
Files.delete(path);


Получение информации о файле:
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);


Пример работы с классом Path:

Path path = Paths.get("example.txt");

// Проверка существования файла
if (!Files.exists(path)) {
// Создание нового файла
try {
Path createdFilePath = Files.createFile(path);
System.out.println("File created at path: " + createdFilePath);
} catch (IOException e) {
e.printStackTrace();
}
}

// Получение информации о файле
System.out.println("File name: " + path.getFileName());
System.out.println("Parent path: " + path.getParent());
System.out.println("Root path: " + path.getRoot());

// Удаление файла
try {
Files.delete(path);
System.out.println("File deleted successfully.");
} catch (IOException e) {
e.printStackTrace();
}


Сравнение File и Path

Структура данных:

File представляет файл или директорию как объект.
Path представляет путь к файлу или директории.


Функциональность:

File предоставляет методы для работы с файлами и директориями.
Path предоставляет более гибкие и мощные методы для работы с путями в файловой системе через пакеты java.nio.file.


Совместимость:

File используется в старом подходе к работе с I/O.
Path и связанные с ним классы (Files, Paths) являются частью нового подхода, введенного в Java 7, и предоставляют больше возможностей и гибкости.


#Java #Training #IO #File #Path
Чтение и запись файлов: FileReader, FileWriter

FileReader

FileReader — это класс в Java, который используется для чтения текстовых файлов. Он является подклассом InputStreamReader и предназначен для упрощения чтения текстовых данных из файлов.

Основные методы FileReader:

Конструкторы:

FileReader(String fileName): Создает объект FileReader, связанный с файлом с указанным именем.
FileReader(File file): Создает объект FileReader, связанный с объектом File.


Чтение данных:

int read(): Читает один символ из файла и возвращает его в виде целого числа. Возвращает -1 в случае достижения конца файла.
int read(char[] cbuf, int offset, int length): Читает символы в массив cbuf, начиная с позиции offset и до length символов.


Закрытие потока:

void close(): Закрывает поток и освобождает все ресурсы, связанные с ним.

Пример чтения файла с использованием FileReader:
import java.io.FileReader;
import java.io.IOException;

public class FileReaderExample {
public static void main(String[] args) {
try (FileReader reader = new FileReader("example.txt")) {
int character;
while ((character = reader.read()) != -1) {
System.out.print((char) character);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


В этом примере создается объект FileReader, связанный с файлом example.txt. Затем файл читается символ за символом до тех пор, пока не достигнет конца файла.

FileWriter

FileWriter — это класс в Java, который используется для записи текстовых файлов. Он является подклассом OutputStreamWriter и предназначен для упрощения записи текстовых данных в файлы.

Основные методы FileWriter:

Конструкторы:

FileWriter(String fileName): Создает объект FileWriter, связанный с файлом с указанным именем.
FileWriter(File file): Создает объект FileWriter, связанный с объектом File.
FileWriter(String fileName, boolean append): Создает объект FileWriter, связанный с файлом с указанным именем, и указывает, нужно ли добавлять данные в конец файла (append).


Запись данных:

void write(int c): Записывает один символ в файл.
void write(char[] cbuf, int off, int len): Записывает часть массива символов в файл.
void write(String str): Записывает строку в файл.


Закрытие потока:

void close(): Закрывает поток и освобождает все ресурсы, связанные с ним.

Пример записи в файл с использованием FileWriter:
import java.io.FileWriter;
import java.io.IOException;

public class FileWriterExample {
public static void main(String[] args) {
try (FileWriter writer = new FileWriter("example.txt")) {
writer.write("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
}
}

В этом примере создается объект FileWriter, связанный с файлом example.txt. Затем в файл записывается строка "Hello, World!".

#Java #Training #IO
Что выведет код?

public class ArrayExample {
public static void main(String[] args) {
int[] numbers = {4, 8, 2, 10, 6};
int result = 1;
for (int i = 0; i < numbers.length; i++) {
if (i % 2 != 0) {
result *= numbers[i];
}
}
System.out.println(result);
}
}


#Tasks
Варианты ответа:
Anonymous Quiz
20%
480
60%
80
20%
48
0%
64
This media is not supported in your browser
VIEW IN TELEGRAM
Подписывайтесь на канал, мы подберем Вам достойную команду🏴‍☠️

https://t.me/Java_for_beginner_dev

#Mems
Буферизованные потоки: BufferedReader, BufferedWriter

BufferedReader

BufferedReader — это класс в Java, который используется для чтения текстовых данных из символьного потока с буферизацией. Буферизация позволяет значительно повысить производительность чтения, так как чтение данных из буфера быстрее, чем напрямую из файла или другого источника.

Основные методы BufferedReader:

Конструкторы:

BufferedReader(Reader in): Создает объект BufferedReader, связанный с указанным символьным потоком.
BufferedReader(Reader in, int sz): Создает объект BufferedReader с указанным размером буфера.


Чтение данных:

String readLine(): Читает одну строку текста. Возвращает null, если достигнут конец потока.
int read(): Читает один символ и возвращает его. Возвращает -1, если достигнут конец потока.
int read(char[] cbuf, int offset, int length): Читает символы в массив cbuf, начиная с позиции offset и до length символов.


Закрытие потока:


void close(): Закрывает поток и освобождает все ресурсы, связанные с ним.

Пример чтения файла с использованием BufferedReader:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedReaderExample {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


В этом примере создается объект BufferedReader, связанный с FileReader, читающим файл example.txt. Затем файл читается построчно до достижения конца файла.


BufferedWriter

BufferedWriter — это класс в Java, который используется для записи текстовых данных в символьный поток с буферизацией. Буферизация позволяет значительно повысить производительность записи, так как запись данных в буфер быстрее, чем напрямую в файл или другой источник.

Основные методы BufferedWriter:

Конструкторы:

BufferedWriter(Writer out): Создает объект BufferedWriter, связанный с указанным символьным потоком.
BufferedWriter(Writer out, int sz): Создает объект BufferedWriter с указанным размером буфера.


Запись данных:

void write(int c): Записывает один символ в поток.
void write(char[] cbuf, int off, int len): Записывает часть массива символов в поток.
void write(String str): Записывает строку в поток.
void newLine(): Записывает символ новой строки в поток.


Закрытие потока:

void close(): Закрывает поток и освобождает все ресурсы, связанные с ним.

Пример записи в файл с использованием BufferedWriter:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWriterExample {
public static void main(String[] args) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"))) {
writer.write("Hello, World!");
writer.newLine();
writer.write("This is an example of BufferedWriter.");
} catch (IOException e) {
e.printStackTrace();
}
}
}

В этом примере создается объект BufferedWriter, связанный с FileWriter, записывающим в файл example.txt. Затем в файл записывается строка "Hello, World!" и "This is an example of BufferedWriter." с новой строкой между ними.

#Java #Training #IO
Работа с байтовыми потоками: InputStream, OutputStream

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

InputStream

InputStream — это абстрактный класс, предназначенный для чтения байтов из различных источников, таких как файлы, массивы байтов, сети и другие.

Основные методы InputStream:

int read(): Читает один байт и возвращает его. Возвращает -1 в случае достижения конца потока.
int read(byte[] b): Читает байты в массив b. Возвращает количество прочитанных байтов или -1, если достигнут конец потока.
int read(byte[] b, int off, int len): Читает до len байтов в массив b, начиная с off. Возвращает количество прочитанных байтов или -1, если достигнут конец потока.
void close(): Закрывает поток и освобождает все связанные с ним ресурсы.


Пример использования FileInputStream для чтения данных из файла:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class InputStreamExample {
public static void main(String[] args) {
try (InputStream inputStream = new FileInputStream("example.bin")) {
int data;
while ((data = inputStream.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


В этом примере создается FileInputStream для чтения байтов из файла example.bin. Каждый байт читается и выводится на консоль.


OutputStream

OutputStream — это абстрактный класс, предназначенный для записи байтов в различные источники, такие как файлы, массивы байтов, сети и другие.

Основные методы OutputStream:

void write(int b): Записывает один байт.
void write(byte[] b): Записывает все байты из массива b.
void write(byte[] b, int off, int len): Записывает байты из массива b, начиная с off и до len.
void close(): Закрывает поток и освобождает все связанные с ним ресурсы.
void flush(): Очищает буфер, записывая все данные.


Пример использования FileOutputStream для записи данных в файл:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class OutputStreamExample {
public static void main(String[] args) {
try (OutputStream outputStream = new FileOutputStream("example.bin")) {
String data = "Hello, World!";
outputStream.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}


В этом примере создается FileOutputStream для записи байтов в файл example.bin. Строка "Hello, World!" конвертируется в массив байтов и записывается в файл.

#Java #Training #IO
Что выведет код?

import java.util.*;

public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("one", "two", "three", "four", "five"));
list.add(2, "zero");
list.remove("four");
list.set(3, "ten");
Collections.sort(list, Comparator.reverseOrder());

for (String s : list) {
System.out.print(s + " ");
}
}
}


#Tasks
Подписывайтесь на канал, вы будете летать только на своем самолете🛩

https://t.me/Java_for_beginner_dev

#Mems
Работа с буферизованными байтовыми потоками: BufferedInputStream, BufferedOutputStream

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

BufferedInputStream

BufferedInputStream — это класс, который добавляет возможность буферизации к байтовым потокам ввода. Он оборачивает другие байтовые потоки и использует внутренний буфер для чтения данных.

Основные методы BufferedInputStream:


Конструкторы:

BufferedInputStream(InputStream in): Создает буферизованный поток ввода с указанным потоком.
BufferedInputStream(InputStream in, int size): Создает буферизованный поток ввода с указанным размером буфера.
int read(): Читает один байт из буфера. Возвращает -1 в случае достижения конца потока.
int read(byte[] b, int off, int len): Читает до len байтов в массив b, начиная с off. Возвращает количество прочитанных байтов или -1, если достигнут конец потока.
void close(): Закрывает поток и освобождает все связанные с ним ресурсы.


Пример использования BufferedInputStream для чтения данных из файла:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class BufferedInputStreamExample {
public static void main(String[] args) {
try (InputStream inputStream = new BufferedInputStream(new FileInputStream("example.bin"))) {
int data;
while ((data = inputStream.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


В этом примере создается BufferedInputStream, оборачивающий FileInputStream, для чтения байтов из файла example.bin. Данные читаются из буфера, что повышает производительность.


BufferedOutputStream


BufferedOutputStream — это класс, который добавляет возможность буферизации к байтовым потокам вывода. Он оборачивает другие байтовые потоки и использует внутренний буфер для записи данных.

Основные методы BufferedOutputStream:

Конструкторы:

BufferedOutputStream(OutputStream out): Создает буферизованный поток вывода с указанным потоком.
BufferedOutputStream(OutputStream out, int size): Создает буферизованный поток вывода с указанным размером буфера.
void write(int b): Записывает один байт в буфер.
void write(byte[] b, int off, int len): Записывает байты из массива b, начиная с off и до len.
void flush(): Очищает буфер, записывая все данные.
void close(): Закрывает поток и освобождает все связанные с ним ресурсы.


Пример использования BufferedOutputStream для записи данных в файл:
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class BufferedOutputStreamExample {
public static void main(String[] args) {
try (OutputStream outputStream = new BufferedOutputStream(new FileOutputStream("example.bin"))) {
String data = "Hello, World!";
outputStream.write(data.getBytes());
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}

В этом примере создается BufferedOutputStream, оборачивающий FileOutputStream, для записи байтов в файл example.bin. Данные сначала записываются в буфер, а затем буфер очищается методом flush.

#Java #Training #IO