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

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Подписывайтесь на канал, у нас высыпаются😏

https://t.me/Java_for_beginner_dev

#Mems
Класс String и его методы

Класс String в Java является частью пакета java.lang и предоставляет множество методов для работы со строками. Строки в Java неизменяемы, что означает, что каждый метод, изменяющий строку, возвращает новый объект строки.

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

Создание строки

Конструкторы класса String:
String str1 = new String();
String str2 = new String("Hello");
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str3 = new String(charArray);
byte[] byteArray = {72, 101, 108, 108, 111};
String str4 = new String(byteArray);


Получение символа по индексу

Метод charAt(int index):
String str = "Hello, World!";
char ch = str.charAt(0); // 'H'


Сравнение строк

Метод compareTo(String anotherString) и compareToIgnoreCase(String str):
String str1 = "Hello";
String str2 = "World";
int result = str1.compareTo(str2); // Отрицательное значение
int resultIgnoreCase = str1.compareToIgnoreCase(str2); // Отрицательное значение


Проверка наличия подстроки

Метод contains(CharSequence s):
String str = "Hello, World!";
boolean containsWorld = str.contains("World"); // true


Проверка начала и конца строки

Методы startsWith(String prefix) и endsWith(String suffix):
String str = "Hello, World!";
boolean startsWithHello = str.startsWith("Hello"); // true
boolean endsWithWorld = str.endsWith("World!"); // true


Разделение строки

Метод split(String regex):
String str = "Hello, World!";
String[] words = str.split(", "); // ["Hello", "World!"]


Соединение массива строк

Метод join(CharSequence delimiter, CharSequence... elements):
String[] words = {"Hello", "World"};
String joinedString = String.join(", ", words); // "Hello, World"


#Java #Training #String
StringBuilder и StringBuffer

StringBuilder и StringBuffer — это классы, предоставляющие изменяемые строки. Они позволяют изменять содержимое строки без создания новых объектов, что делает их более эффективными для частых операций изменения строк.

StringBuilder

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

Основные методы StringBuilder

Создание объекта StringBuilder:
StringBuilder sb = new StringBuilder(); // Создает пустой StringBuilder
StringBuilder sbWithCapacity = new StringBuilder(50); // Создает StringBuilder с начальной емкостью 50 символов
StringBuilder sbWithString = new StringBuilder("Hello"); // Создает StringBuilder с начальной строкой "Hello"


Добавление текста (метод append):
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!"); // sb теперь содержит "Hello, World!"


Вставка текста (метод insert):
StringBuilder sb = new StringBuilder("Hello, !");
sb.insert(7, "World"); // sb теперь содержит "Hello, World!"


Замена текста (метод replace):
StringBuilder sb = new StringBuilder("Hello, World!");
sb.replace(7, 12, "Java"); // sb теперь содержит "Hello, Java!"


Удаление текста (метод delete):
StringBuilder sb = new StringBuilder("Hello, World!");
sb.delete(5, 7); // sb теперь содержит "HelloWorld!"


Реверс строки (метод reverse):
StringBuilder sb = new StringBuilder("Hello");
sb.reverse(); // sb теперь содержит "olleH"


Получение длины и емкости:
StringBuilder sb = new StringBuilder("Hello");
int length = sb.length(); // 5
int capacity = sb.capacity(); // Емкость по умолчанию + длина строки "Hello"


Получение подстроки (метод substring):
StringBuilder sb = new StringBuilder("Hello, World!");
String subStr = sb.substring(7, 12); // "World"


StringBuffer

Класс StringBuffer аналогичен StringBuilder, но синхронизирован, что делает его безопасным для использования в многопоточных средах. Из-за синхронизации StringBuffer несколько медленнее, чем StringBuilder.

Основные методы StringBuffer

Методы класса StringBuffer аналогичны методам класса StringBuilder, поэтому приведем лишь их примеры:

Создание объекта StringBuffer:
StringBuffer sb = new StringBuffer(); // Создает пустой StringBuffer
StringBuffer sbWithCapacity = new StringBuffer(50); // Создает StringBuffer с начальной емкостью 50 символов
StringBuffer sbWithString = new StringBuffer("Hello"); // Создает StringBuffer с начальной строкой "Hello"


Добавление текста (метод append):
StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!"); // sb теперь содержит "Hello, World!"


Вставка текста (метод insert):
StringBuffer sb = new StringBuffer("Hello, !");
sb.insert(7, "World"); // sb теперь содержит "Hello, World!"


Замена текста (метод replace):
StringBuffer sb = new StringBuffer("Hello, World!");
sb.replace(7, 12, "Java"); // sb теперь содержит "Hello, Java!"


Удаление текста (метод delete):
StringBuffer sb = new StringBuffer("Hello, World!");
sb.delete(5, 7); // sb теперь содержит "HelloWorld!"


Реверс строки (метод reverse):
StringBuffer sb = new StringBuffer("Hello");
sb.reverse(); // sb теперь содержит "olleH"


Получение длины и емкости:
StringBuffer sb = new StringBuffer("Hello");
int length = sb.length(); // 5
int capacity = sb.capacity(); // Емкость по умолчанию + длина строки "Hello"


Получение подстроки (метод substring):
StringBuffer sb = new StringBuffer("Hello, World!");
String subStr = sb.substring(7, 12); // "World"


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

public class StaticExample {
static int count = 0;

public StaticExample() {
count++;
}

public static int getCount() {
return count;
}

public static void main(String[] args) {
StaticExample obj1 = new StaticExample();
StaticExample obj2 = new StaticExample();
StaticExample obj3 = new StaticExample();

System.out.println(StaticExample.getCount());
}
}


#Tasks
Варианты ответа:
Anonymous Quiz
15%
1
55%
3
15%
0
15%
2
Подписывайтесь на канал, мы знаем, что делать с багами🪲🔫

https://t.me/Java_for_beginner_dev

#Mems
Forwarded from CRYPTON Tech
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Разница между String, StringBuilder и StringBuffer

Строки (String)

Неизменяемость: Объекты класса String неизменяемы. После создания строки, её содержимое не может быть изменено.
Потокобезопасность: String является потокобезопасным из-за своей неизменяемости. Разные потоки могут безопасно использовать один и тот же объект строки.
Использование памяти: Каждое изменение строки создает новый объект, что может привести к большому количеству временных объектов и нагрузке на сборщик мусора.


Пример использования:
String str = "Hello";
str = str + ", World!"; // Создается новый объект строки


StringBuilder

Изменяемость: Объекты класса StringBuilder изменяемы. Можно изменять содержимое объекта без создания новых объектов.
Потокобезопасность: StringBuilder не является потокобезопасным. Он не синхронизирован, что делает его быстрым, но небезопасным для использования в многопоточных средах.
Использование памяти: StringBuilder более эффективен с точки зрения использования памяти при частых изменениях строк, так как не создает множество временных объектов.


Пример использования:
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!"); // Изменяется текущий объект sb


StringBuffer

Изменяемость: Объекты класса StringBuffer изменяемы, как и StringBuilder.
Потокобезопасность: StringBuffer является потокобезопасным. Он синхронизирован, что делает его безопасным для использования в многопоточных средах, но более медленным по сравнению с StringBuilder.
Использование памяти: StringBuffer эффективен с точки зрения использования памяти при частых изменениях строк в многопоточных приложениях.


Пример использования:
StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!"); // Изменяется текущий объект sb


Сравнение производительности

String: Создание новых объектов при каждом изменении строки делает String менее эффективным при частых изменениях.
StringBuilder: Не синхронизирован и поэтому быстрее, чем StringBuffer, при работе в однопоточных приложениях.
StringBuffer: Синхронизирован и, следовательно, медленнее, чем StringBuilder, но безопасен для использования в многопоточных приложениях.

Когда использовать каждый из классов?

String: Используйте String, когда строки неизменяемы или изменения редки. Подходит для констант и неизменяемых текстовых данных.
StringBuilder: Используйте StringBuilder, когда строки часто изменяются и безопасность потоков не является проблемой. Подходит для однопоточных приложений.
StringBuffer: Используйте StringBuffer, когда строки часто изменяются и требуется безопасность потоков. Подходит для многопоточных приложений.


Примеры использования:

String:
String str = "Hello";
str = str + ", World!"; // Создание нового объекта


StringBuilder:
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!"); // Изменение текущего объекта


StringBuffer:
StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!"); // Изменение текущего объекта


#Java #Training #String
Всем доброго летнего утра и дня!

Рассказывайте, что у Вас нового и интересного!

Сегодня я запустил публикацию небольших видео на нашем ютуб канале - https://www.youtube.com/channel/UCPIFxEy9uf_LzstTSLrjPhw!

Видео там пока одно, но я думаю совместными усилиями мы сделаем из него что-то достойное!))

#YouTube
Подписывайтесь на канал, мы знаем, бл...

https://t.me/Java_for_beginner_dev

#Mems
Подписывайтесь на канал, мы научим общению с заказчиком😏

https://t.me/Java_for_beginner_dev

#Mems
@alexlikhanov - что-то навеяло😂😂😂

#Mems
Коллекции

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

Основные интерфейсы коллекций

Collection

Родительский интерфейс для большинства коллекций.
Основные методы: add(), remove(), size(), contains(), iterator().
List

Упорядоченная коллекция, допускающая дублирование элементов.
Основные реализации: ArrayList, LinkedList, Vector.
Set

Коллекция, не допускающая дублирование элементов.
Основные реализации: HashSet, LinkedHashSet, TreeSet.
Queue

Коллекция, предназначенная для хранения элементов перед их обработкой.
Основные реализации: LinkedList, PriorityQueue.
Map

Коллекция, хранящая пары ключ-значение.
Основные реализации: HashMap, LinkedHashMap, TreeMap, Hashtable.
Основные методы коллекций

add(E element): добавляет элемент в коллекцию.
remove(Object o): удаляет элемент из коллекции.
size(): возвращает количество элементов в коллекции.
contains(Object o): проверяет, содержит ли коллекция указанный элемент.
iterator(): возвращает итератор для перебора элементов коллекции.


Итераторы

Итераторы позволяют проходить по элементам коллекции:
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}


Generics в коллекциях

Использование generics позволяет коллекциям работать с определенным типом данных:
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
// list.add(1); // Ошибка компиляции, так как list предназначен для хранения только строк.
Преимущества использования коллекций


Гибкость: коллекции позволяют хранить произвольное количество объектов.
Удобство: коллекции предоставляют мощные методы для работы с данными.
Производительность: коллекции оптимизированы для различных операций, таких как добавление, удаление и поиск элементов.


#Java #Training #Collections
Подписывайтесь на канал, иногда мы тоже приходим в офис🙈

https://t.me/Java_for_beginner_dev

#Mems
Что выведет код?

import java.util.ArrayList;
import java.util.List;

public class ArrayListExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
numbers.add(1, 15);
numbers.set(2, 25);
numbers.remove(3);

System.out.println(numbers);
}
}


#Tasks
List, ArrayList, LinkedList

List

List — это интерфейс в Java, представляющий упорядоченную коллекцию, допускающую дублирование элементов. Основные реализации интерфейса List включают ArrayList и LinkedList.

ArrayList

ArrayList — это класс, реализующий интерфейс List, основанный на динамическом массиве. Он предоставляет быстрый доступ к элементам по индексу и эффективен для операций добавления и удаления элементов в конце списка.

Основные методы ArrayList

Создание ArrayList:
List<String> arrayList = new ArrayList<>();


Добавление элементов:
arrayList.add("Apple");
arrayList.add("Banana");
arrayList.add("Orange");


Доступ по индексу:
String fruit = arrayList.get(0); // "Apple"


Изменение элемента:
arrayList.set(1, "Grapes"); // Изменяет "Banana" на "Grapes"


Удаление элемента:
arrayList.remove(0); // Удаляет "Apple"


Размер списка:
int size = arrayList.size(); // 2


Перебор элементов:
for (String fruit : arrayList) {
System.out.println(fruit);
}



LinkedList

LinkedList — это класс, реализующий интерфейс List, основанный на двусвязном списке. Он предоставляет эффективное добавление и удаление элементов в середине списка, но доступ по индексу медленнее по сравнению с ArrayList.

Основные методы LinkedList

Создание LinkedList:
List<String> linkedList = new LinkedList<>();


Добавление элементов:
linkedList.add("Apple");
linkedList.add("Banana");
linkedList.add("Orange");


Доступ по индексу:
String fruit = linkedList.get(0); // "Apple"


Изменение элемента:
linkedList.set(1, "Grapes"); // Изменяет "Banana" на "Grapes"


Удаление элемента:
linkedList.remove(0); // Удаляет "Apple"


Размер списка:
int size = linkedList.size(); // 2


Перебор элементов:
for (String fruit : linkedList) {
System.out.println(fruit);
}


Сравнение ArrayList и LinkedList

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

ArrayList основан на динамическом массиве.
LinkedList основан на двусвязном списке.


Доступ по индексу:

ArrayList обеспечивает быстрый доступ по индексу (O(1)).
LinkedList медленнее при доступе по индексу (O(n)).


Добавление и удаление элементов:

ArrayList быстрее добавляет и удаляет элементы в конце списка (O(1)).
LinkedList быстрее добавляет и удаляет элементы в середине списка (O(1) для добавления/удаления с начала/конца, O(n) для доступа по индексу).


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

ArrayList использует меньше памяти, так как хранит элементы в массиве.
LinkedList использует больше памяти из-за хранения ссылок на предыдущий и следующий элементы.


#Java #Training #Collections
Set, HashSet, TreeSet

Set

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

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

HashSet
TreeSet
LinkedHashSet (реализует упорядоченный по порядку добавления Set)
HashSet


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

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

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


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

Создание HashSet:
Set<String> hashSet = new HashSet<>();


Добавление элементов:
hashSet.add("Apple");
hashSet.add("Banana");
hashSet.add("Orange");


Удаление элементов:
hashSet.remove("Banana");


Проверка наличия элемента:
boolean containsApple = hashSet.contains("Apple"); // true


Размер множества:
int size = hashSet.size(); // 2


Перебор элементов:
for (String fruit : hashSet) {
System.out.println(fruit);
}


TreeSet

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

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

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


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

Создание TreeSet:
Set<String> treeSet = new TreeSet<>();


Добавление элементов:
treeSet.add("Apple");
treeSet.add("Banana");
treeSet.add("Orange");


Удаление элементов:
treeSet.remove("Banana");


Проверка наличия элемента:
boolean containsApple = treeSet.contains("Apple"); // true


Размер множества:
int size = treeSet.size(); // 2


Перебор элементов:
for (String fruit : treeSet) {
System.out.println(fruit);
}


Получение первого и последнего элемента:
String first = treeSet.first(); // "Apple"
String last = treeSet.last(); // "Orange"


Подмножества:
SortedSet<String> subSet = treeSet.subSet("Apple", "Orange");


Сравнение HashSet и TreeSet

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

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


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

HashSet не гарантирует упорядоченности элементов.
TreeSet хранит элементы в отсортированном порядке.


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

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

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

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


#Java #Training #Collections