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
Небольшой разбор задачки от нашего подписчика)))

Оцените!👍
Forwarded from RomanGV
This media is not supported in your browser
VIEW IN TELEGRAM
Вот записал.. сказку на ночь)))
Сильно не пинайте, впервые такое записываю😀

Разбор той мини задачки "Шо напечатает код, который в следующем сообщении, если ввести "1abcd"?))"
#Tasks #Solution
Всем приятных выходных!

Не думаем о работе, наслаждаемся летом и солнышком🔆

Делитесь фото, как отдыхаете!😉

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

public class Main {
public static void main(String[] args) {
int x = 10;
int y = 5;
x += y; // x = x + y
y -= 3; // y = y - 3
x *= 2; // x = x * 2
y /= 2; // y = y / 2
System.out.println("x = " + x + ", y = " + y);
}
}


#Tasks
Подписывайтесь на канал, мы работаем даже на выходных😏

https://t.me/Java_for_beginner_dev

#Mems
Перегрузка метода

Перегрузка методов (method overloading) – это возможность создания в классе нескольких методов с одинаковым именем, но с разными параметрами.
Рассмотрим пример класса Calculator, который будет выполнять сложение двух и трех чисел:
public class Calculator {
public int add(int a, int b) {
return a + b;
}

public int add(int a, int b, int c) {
return a + b + c;
}
public int calculate(int a, int b) {
return a + b;
}
}

В данном случае, у нас есть два метода add с одинаковым именем, но разными параметрами. Java определяет, какой метод вызвать на основе количества и типа переданных аргументов.
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println("Сумма двух чисел: " + calc.add(2, 3)); // Выводит 5
System.out.println("Сумма трех чисел: " + calc.add(2, 3, 4)); // Выводит 9
}
}

Варианты перегрузки

Можно выделить три варианта перегрузки.

По количеству параметров.
public class Calculator {
void calculate(int number1, int number2) { }
void calculate(int number1, int number2, int number3) { }
}


По типам параметров:

public class Calculator {
void calculate(int number1, int number2) { }
void calculate(double number1, double number2) { }
}


По порядку параметров:
public class Calculator {
void calculate(double number1, int number2) { }
void calculate(int number1, double number2) { }
}


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

#Java #Training
This media is not supported in your browser
VIEW IN TELEGRAM
Уважаемые подписчики!

Сегодня в 16:00 по МСК, @MrAbhorrent проведет вторую часть урока по написанию игры крестики-нолики!

Присоединяйтесь!
От нас лайф-кодинг для новичков и печеньки, от Вас - адекватное общение!)))

Ждем Всех!

Общаться будем через Яндекс.Телемост, ссылку опубликуем в нашем чате! - https://t.me/Java_Beginner_chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Пакеты и импорт

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

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

Пример создания пакета:
package com.example.myapp;


Структура пакетов
Пакеты организуются иерархически, как директории в файловой системе. Например, пакет com.example.myapp будет находиться в директории com/example/myapp.

Пример файловой структуры:
src
└── com
└── example
└── myapp
├── Main.java
└── Utils.java


Импорт пакетов
Для использования классов из других пакетов необходимо их импортировать. Импорт осуществляется с использованием ключевого слова import.

Пример импорта:
import com.example.myapp.Utils;


Можно импортировать все классы из пакета, используя *:
import com.example.myapp.*;


Полное имя класса

Классы можно использовать с полным именем (включая пакет), без необходимости импортировать их:
public class Main {
public static void main(String[] args) {
com.example.myapp.Utils.printHello();
}
}


Пример создания пакета и его использования:

Файл: com/example/myapp/Utils.java
package com.example.myapp;

public class Utils {
public static void printHello() {
System.out.println("Hello from Utils!");
}
}


Файл: com/example/myapp/Main.java
package com.example.myapp;

import com.example.myapp.Utils;

public class Main {
public static void main(String[] args) {
Utils.printHello();
}
}


Преимущества использования пакетов:

Организация кода: Пакеты помогают логически группировать связанные классы и интерфейсы.
Избежание конфликтов имен: Пакеты предотвращают конфликт имен, поскольку классы с одинаковыми именами могут существовать в разных пакетах.
Контроль доступа: Пакеты позволяют управлять доступом к классам и методам, используя модификаторы доступа (default и protected).
Упрощение навигации: Структурированные пакеты облегчают навигацию по проекту и поиск нужных классов.


#Java #Training
Подписывайтесь на канал, тут научат не говнокодить👍

https://t.me/Java_for_beginner_dev

#Mems
Что выведет код?
public class Main {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "World";
String str3 = str1 + ", " + str2 + "!";
str1 = str1.replace("H", "J");
str2 = str2.substring(1, 4);
str3 = str1 + ", " + str2 + "!";
System.out.println(str3);
}
}

#Tasks
Варианты ответа:
Anonymous Quiz
5%
Hello, World!
84%
Jello, orl!
5%
Hello, orl!
5%
Jello, Wor!
Основные принципы организации классов и пакетов

Логическая группировка: Классы, которые связаны по функциональности, должны быть сгруппированы в один пакет. Например, все классы, связанные с работой с базой данных, могут быть помещены в пакет com.example.database.

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

Пример иерархической структуры пакетов:
src
└── com
└── example
├── main
│ └── Main.java
├── utils
│ └── Utils.java
└── database
├── DatabaseHelper.java
└── DatabaseConfig.java


Именование пакетов: Имена пакетов должны быть в нижнем регистре и отражать их содержимое. Принято начинать имя пакета с доменного имени организации в обратном порядке, например, com.example.

Разделение по слоям приложения: Организуйте пакеты согласно архитектурным слоям приложения, например, controller, service, repository, model.

Пример организации по слоям:
src
└── com
└── example
├── controller
│ └── UserController.java
├── service
│ └── UserService.java
├── repository
│ └── UserRepository.java
└── model
└── User.java


Использование подкаталогов: Разделяйте большие пакеты на подкаталоги для упрощения структуры.


Практические советы по организации классов и пакетов

Избегайте больших пакетов: Не создавайте пакеты с слишком большим количеством классов. Разделяйте их на подкатегории по функциональности.
Используйте модификаторы доступа: Ограничивайте доступ к классам и методам, которые не должны использоваться за пределами пакета. Используйте модификатор доступа default для классов и методов, доступных только внутри пакета.

Документируйте пакеты и классы: Добавляйте комментарии и Javadoc к пакетам и классам для облегчения понимания их назначения и функциональности.
Следите за зависимостями: Избегайте циклических зависимостей между пакетами. Структурируйте пакеты так, чтобы зависимости шли только в одном направлении.


Пример проекта с комментариями и структурой пакетов:
src
└── com
└── example
├── controller
│ └── UserController.java
├── service
│ └── UserService.java
├── repository
│ └── UserRepository.java
└── model
└── User.java


Файл: com/example/controller/UserController.java
package com.example.controller;

import com.example.service.UserService;

/**
* Контроллер для обработки запросов пользователей
*/
public class UserController {
private UserService userService;

public UserController() {
userService = new UserService();
}

public void handleRequest() {
userService.processUser();
}
}


Файл: com/example/service/UserService.java
package com.example.service;

import com.example.repository.UserRepository;

/
* Сервис для обработки логики пользователей
*/
public class UserService {
private UserRepository userRepository;

public UserService() {
userRepository = new UserRepository();
}

public void processUser() {
userRepository.saveUser();
}
}


Файл: com/example/repository/UserRepository.java
package com.example.repository;

/
* Репозиторий для работы с базой данных пользователей
*/
public class UserRepository {
public void saveUser() {
System.out.println("User saved to the database");
}
}


Файл: com/example/model/User.java
package com.example.model;

/**
* Модель данных пользователя
*/
public class User {
private String name;

public User(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}


#Java #Training
Исключения: Основы

Исключения (exceptions)
в Java — это события, которые происходят во время выполнения программы и нарушают нормальный поток её выполнения. Исключения используются для управления ошибками и другими непредвиденными ситуациями.

Иерархия исключений

Иерархия классов исключений в Java начинается с класса Throwable, который делится на два подкласса: Error и Exception.

Error: Используется для обозначения серьёзных проблем, которые не могут быть обработаны приложением (например, ошибки виртуальной машины Java).
Exception: Используется для обозначения условий, которые приложение может попытаться обработать.


Иерархия классов исключений:
- Throwable
- Error
- Exception
- RuntimeException


Checked и Unchecked исключения

Checked исключения: Проверяемые исключения (checked exceptions) являются подтипами класса Exception, за исключением подтипов RuntimeException. Эти исключения проверяются во время компиляции. Пример: IOException.
Unchecked исключения: Непроверяемые исключения (unchecked exceptions) являются подтипами класса RuntimeException. Эти исключения не проверяются во время компиляции. Пример: NullPointerException.


Примеры исключений:

Checked исключение: FileNotFoundException, которое возникает, если файл не найден.
Unchecked исключение: ArrayIndexOutOfBoundsException, которое возникает при попытке доступа к несуществующему элементу массива.


Создание собственного исключения

Вы можете создать свои собственные исключения, расширяя класс Exception или RuntimeException.
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}


Пример использования пользовательского исключения:
public class Main {
public static void main(String[] args) {
try {
validateAge(15);
} catch (CustomException e) {
System.out.println(e.getMessage());
}
}

public static void validateAge(int age) throws CustomException {
if (age < 18) {
throw new CustomException("Age must be at least 18.");
}
}
}


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

getMessage(): Возвращает описание исключения.
printStackTrace(): Выводит трассировку стека исключения.
getStackTrace(): Возвращает массив элементов стека, представляющий трассировку стека исключения.



Пример использования методов класса Throwable:
public class Main {
public static void main(String[] args) {
try {
int result = divide(10, 0);
} catch (ArithmeticException e) {
System.out.println("Exception: " + e.getMessage());
e.printStackTrace();
}
}

public static int divide(int a, int b) {
return a / b; // Бросает ArithmeticException при делении на ноль
}
}


#Java #Training #Exception
Давайте проверим сколько реально людей заглядывают на канал! Жмакайте, посчитаем)
Anonymous Poll
96%
Я тут!!!
4%
Где я? Что это за группа?
Подписывайтесь на канал, мы расскажем как происходит на самом деле🤌

https://t.me/Java_for_beginner_dev

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

public class Main {
public static void main(String[] args) {
var number = 10;
var text = "The number is ";
var result = text + number;

number += 5;
result += number;

System.out.println(result);
}
}


#Tasks
Обработка исключений

В Java для обработки исключений используются блоки try, catch и finally. Эти блоки помогают управлять ошибками и выполнять очистку ресурсов.

Блок try-catch
Блок try содержит код, который может вызвать исключение. Блок catch используется для обработки этого исключения.

Синтаксис try-catch:
try {
// Код, который может вызвать исключение
} catch (ExceptionType e) {
// Код для обработки исключения
}


Пример использования try-catch:
public class Main {
public static void main(String[] args) {
try {
int result = divide(10, 0);
} catch (ArithmeticException e) {
System.out.println("Cannot divide by zero!");
}
}

public static int divide(int a, int b) {
return a / b; // Бросает ArithmeticException при делении на ноль
}
}


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

Синтаксис try-catch-finally:
try {
// Код, который может вызвать исключение
} catch (ExceptionType e) {
// Код для обработки исключения
} finally {
// Код, который будет выполнен в любом случае
}


Пример использования try-catch-finally:
public class Main {
public static void main(String[] args) {
try {
int result = divide(10, 0);
} catch (ArithmeticException e) {
System.out.println("Cannot divide by zero!");
} finally {
System.out.println("Execution completed.");
}
}

public static int divide(int a, int b) {
return a / b; // Бросает ArithmeticException при делении на ноль
}
}


Обработка нескольких исключений
Можно обработать несколько типов исключений, используя несколько блоков catch.

Пример обработки нескольких исключений:
public class Main {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Array index is out of bounds!");
} catch (Exception e) {
System.out.println("An error occurred!");
}
}
}


Множественные исключения в одном catch
С Java 7 можно обрабатывать несколько типов исключений в одном блоке catch, используя оператор |.

Пример использования одного catch для нескольких исключений:
public class Main {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
System.out.println("An error occurred: " + e.getMessage());
}
}
}


#Java #Training #Exception #TryCatch
Java for Beginner
Давайте проверим сколько реально людей заглядывают на канал! Жмакайте, посчитаем)
Любопытно...
Из 80+ подписчиков данный пост посмотрело 37 человек...
Нажать на варианты ответа рискнуло всего 11...
Вопрос, где остальные?))))