# Java Learning Repository ## Описание Этот репозиторий содержит мои учебные проекты и примеры кода, которые я создал, проходя курс "Java tutorial for beginners" от Mosh на [YouTube](https://www.youtube.com/watch?v=eIrMbAQSU34). ## Прогресс Курса "Java tutorial for beginners" от Mosh Вот перечень тем, которые я уже прошел, и тех, что еще предстоит изучить: - [x] Introduction / Введение - [x] Installing Java / Установка Java - [x] Anatomy of a Java Program / Анатомия Java-программы - [x] [Main.java](src/Main.java)Your First Java Program / Ваша первая Java-программа - [x] Cheat Sheet / Шпаргалка - [x] How Java Code Gets Executed / Как выполняется Java-код - [x] Course Structure / Структура курса - [x] [Types](src/F001_Variables.java) / Типы данных - [x] [F001_Variables.java](src/F001_Variables.java) / Переменные - [x] [F002_PrimitiveTypes.java](src/F002_PrimitiveTypes.java) / Примитивные типы - [x] [F003_ReferenceTypes.java](src/F003_ReferenceTypes.java) / Ссылочные типы - [x] Primitive Types vs [F003_ReferenceTypes.java](src/F003_ReferenceTypes.java) / Сравнение примитивных и ссылочных типов - [x] [F004_Strings.java](src/F004_Strings.java) / Строки - [x] [F005_EscapeSequences.java](src/F005_EscapeSequences.java) / Escape-последовательности - [x] [F006_Arrays.java](src/F006_Arrays.java) / Массивы - [x] [F007_MultiDimensionalArrays.java](src/F007_MultiDimensionalArrays.java) / Многомерные массивы - [x] [F008_Constants.java](src/F008_Constants.java) / Константы - [x] [F009_ArithmeticExpressions.java](src/F009_ArithmeticExpressions.java) / Арифметические выражения - [x] [F010_OrderOfOperations.java](src/F010_OrderOfOperations.java) / Порядок операций - [x] [F011_Casting.java](src/F011_Casting.java) / Приведение типов - [x] [F012_TheMathClass.java](src/F012_TheMathClass.java) / Класс Math - [x] [F013_FormattingNumbers.java](src/F013_FormattingNumbers.java) / Форматирование чисел - [x] [F014_ReadingInput.java](src/F014_ReadingInput.java) / Чтение ввода - [ ] [F015_ProjectMortgageCalculator.java](src/F015_ProjectMortgageCalculator.java) / Проект: Калькулятор ипотеки - [x] [F016_SolutionMortgageCalculator.java](src/F016_SolutionMortgageCalculator.java) / Решение: Калькулятор ипотеки - [x] [F017_TypesSummary.java](src/F017_TypesSummary.java) / Сводка по типам данных - [x] [F018_ControlFlow.java](src/F018_ControlFlow.java) / Управление потоком - [x] [F019_ComparisonOperators.java](src/F019_ComparisonOperators.java) / Операторы сравнения - [x] [F020_LogicalOperators.java](src/F020_LogicalOperators.java) / Логические операторы - [x] [F021_IfStatements.java](src/F021_IfStatements.java) / Условные операторы if - [x] [F022_SimplifyingIfStatements.java](src/F022_SimplifyingIfStatements.java) / Упрощение условных операторов if - [x] [F023_TheTernaryOperator.java](src/F023_TheTernaryOperator.java) / Тернарный оператор - [x] [F024_SwitchStatements.java](src/F024_SwitchStatements.java) / Операторы switch - [x] [F025_ExerciseFizzBuzz.java](src/F025_ExerciseFizzBuzz.java) / Упражнение: FizzBuzz - [x] [F026_ForLoops.java](src/F026_ForLoops.java) / Циклы for - [x] [F027_WhileLoops.java](src/F027_WhileLoops.java) / Циклы while - [x] [F028_DoWhileLoops.java](src/F028_DoWhileLoops.java) / Циклы do...while - [x] [F029_BreakAndContinue.java](src/F029_BreakAndContinue.java) / Break и Continue - [x] [F030_ForEachLoop.java](src/F030_ForEachLoop.java) / Цикл for-each - [x] [F031_ProjectMortgageCalculator.java](src/F031_ProjectMortgageCalculator.java) / Проект: Калькулятор ипотеки - [x] [F032_SolutionMortgageCalculator.java](src/F032_SolutionMortgageCalculator.java) / Решение: Калькулятор ипотеки - [x] Control Flow Summary / Сводка по управлению потоком - [x] Clean Code / Чистый код ## Дополнительное Обучение Я также активно изучаю Java на платформе [JavaRush](https://javarush.com) и Курс **"Основы Java и практикум решения задач на Java"** [Stepik](https://stepik.org/180585), что помогает мне укрепить и расширить мои знания и навыки программирования. ## Курс "Основы Java и практикум решения задач на Java" by Stepik Этот репозиторий содержит материалы в рамках прохождения курса "Основы Java и практикум решения задач на Java" на [Stepik](https://stepik.org/180585). В курсе узнаем основы программирования на языке Java и освоим ключевые концепции и навыки. Курс состоит из 11 модулей, каждый из которых покрывает разные аспекты программирования на Java. ## Программа курса - [x] 1. Основы работы с языком Java * *В данном модуле описываются принципы языка Java и его отличия от других языков программирования, дается помощь с правильной установкой Java на компьютер для удобного дальнейшего использования и разбирается базовый синтаксис программы на Java.* - [x] 1.1 Что такое Java и зачем она нужна - [x] 1.2 Среда разработки, установка Java - [x] 1.3 ~~Первая~~ программа на Java. Hello, World! [Main.java](src/Main.java) - [ ] 2. Типы данных и операции над ними * *В этом модуле мы научимся определять переменные, разберем какие типы данных есть в Java и какими особенностями они обладают. Также рассматриваем ввод-вывод данных и простейшие операции над разными типами данных.* - [ ] 2.1 Типы данных и переменные - [ ] 2.2 Ввод-вывод данных - [ ] 2.3 Символьные и логические типы данных - [ ] 2.4 Числовые типы данных - [ ] 3. Логические выражения и условный оператор * *Рассматриваем логические операторы и их применение с разными типами данных. Изучаем условный оператор и все удобства его использования.* - [ ] 3.1 Логические операции - [ ] 3.2 Логические выражения if/else - [ ] 3.3 Вложенность логических выражений. switch/case - [ ] 4. Циклы * *В этом модуле посмотрим что такое циклы, зачем они нужны, какими особенностями обладают циклы Java.* - [ ] 4.1 Циклы while/do while - [ ] 4.2 Цикл for - [ ] 4.3 Вложенные циклы - [ ] 5. Массивы * *Здесь мы узнаем, что такое массивы, какие массивы бывают, в каких ситуациях какие массивы лучше использовать. Кроме того, посмотрим на двумерные массивы и на работу с ними.* - [ ] 5.1 Статический массив - [ ] 5.2 Методы работы с массивом - [ ] 5.3 Двумерный массив - [ ] 6. Методы * *Здесь мы разберем, что такое метод, из чего состоит метод, как создать свой метод, а также научимся импортировать готовые методы и посмотрим на применение наиболее полезных из них. Рассмотрим рекурсию*.* - [ ] 6.1 Введение в методы - [ ] 6.2 Область видимости переменной - [ ] 6.3 Рекурсия - [ ] 7. ООП (Объектно-ориентированное программирование) * *Узнаем что такое ООП, какие особенности имеет ООП в Java. Познакомимся с понятием объекта. Рассмотрим классы и их взаимодействие друг с другом. Углубимся в использование сторонних библиотек. Будем создавать свои классы.* - [ ] 7.1 Классы и объекты - [ ] 7.2 Конструктор класса, статические поля и методы - [ ] 7.3 Наследование и полиморфизм - [ ] 7.4 Абстрактные классы и интерфейсы - [ ] 7.5 Внутренние и анонимные классы - [ ] 8. Collections * *Мы разберем, что такое Collections и какие структуры данных предоставляются в стандартной библиотеке Java для удобного хранения и обработки данных.* - [ ] 8.1 Что такое Collections - [ ] 8.2 ArrayList и LinkedList - [ ] 8.3 Множества и словари - [ ] 8.4 Очередь и стек - [ ] 9. Ошибки и исключения * *Рассмотрим, что такое исключения и как обрабатывать ошибки в Java.* - [ ] 9.1 Исключения и работа с ними - [ ] 10. Заключение * *Подведение итогов и рекомендации по дальнейшему обучению.* - [ ] 11. Задачи * *Подготовка к вступительным испытаниям в Высшую школу экономики.* - [ ] 11.1 Задание 1 - [ ] 11.2 Задание 2 - [ ] 11.3 Задание 3 - [ ] 11.4 Задание 4 - [ ] 11.5 Задание 5 Каждый модуль включает в себя теоретический материал и множество практических задач для закрепления навыков. ## Черновики и Примеры Кода В этом репозитории вы найдете мои черновики и примеры кода, которые я использую для укрепления знаний, полученных в ходе обучения. Все примеры синхронизированы с моим локальным окружением и регулярно обновляются. ## Вклад в Проект Если у вас есть предложения или замечания по улучшению кода, пожалуйста, не стесняйтесь оставлять их в разделе Issues этого репозитория. ## Лицензия Этот проект является открытым и доступен для всех желающих учиться программированию на Java. --- Создано с ❤️ и усердием в процессе обучения Java.