> For the complete documentation index, see [llms.txt](https://letas-organization.gitbook.io/letaats-lessons-online/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://letas-organization.gitbook.io/letaats-lessons-online/kolledzh-top/razdel-1/glava-4.-ustanovka-sredy-razrabotki-i-pervyi-proekt.md).

# Глава 4. Установка среды разработки и первый проект

### 4.1. Что нужно для начала работы

Для написания Java-программ нужны:

1. JDK.
2. Среда разработки.
3. Понимание структуры проекта.

JDK — инструменты Java.\
IDE — программа, в которой удобно писать код.\
Проект — папка с файлами программы.

***

### 4.2. Что такое IntelliJ IDEA

IntelliJ IDEA — среда разработки для Java.

Она помогает:

* создавать проекты;
* писать код;
* запускать программы;
* видеть ошибки;
* форматировать код;
* работать с несколькими файлами.

Важно:

```
IntelliJ IDEA не пишет программу за вас.
Она только помогает.
```

Пока это не очевидно многим людям, рынок “сделаю приложение за вечер” будет процветать. Но мы здесь всё-таки учимся думать.

***

### 4.3. Что такое Android Studio

Android Studio — среда разработки для Android-приложений.

Она основана на IntelliJ IDEA, но содержит специальные инструменты для Android:

* создание Android-проектов;
* XML-разметка;
* эмулятор;
* сборка APK;
* Logcat;
* работа с Activity.

В начале полезно учиться Java в IntelliJ IDEA, потому что там меньше Android-сложности. Потом можно переходить в Android Studio.

***

### 4.4. Создание первого Java-проекта

Общий порядок:

1. Открыть IntelliJ IDEA.
2. Создать новый проект.
3. Выбрать Java.
4. Указать JDK.
5. Создать файл `Main.java`.
6. Написать код.
7. Запустить программу.

***

### 4.5. Первый код

```java
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, Java");
    }
}
```

Разбор:

```java
public class Main
```

Создаётся класс `Main`.

```java
public static void main(String[] args)
```

Метод, с которого начинается программа.

```java
System.out.println("Hello, Java");
```

Вывод текста в консоль.

***

### 4.6. Как запустить программу

В IntelliJ IDEA обычно можно нажать зелёный треугольник рядом с методом `main` или классом.

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

```
Hello, Java
```

Если появилась ошибка, нужно читать текст ошибки. Не закрывать, не паниковать, не делать вид, что ничего не произошло. Ошибка — это не катастрофа, это сообщение о проблеме.

***

### 4.7. Как читать ошибки

Ошибка обычно содержит:

* место ошибки;
* строку;
* описание проблемы.

Пример:

```
';' expected
```

Значит, Java ждала точку с запятой.

Пример:

```
cannot find symbol
```

Значит, Java не знает указанное имя: переменную, метод или класс.

Пример:

```
incompatible types
```

Значит, типы не совпадают.

***

### 4.8. Форматирование кода

Код должен быть читаемым.

Плохо:

```java
public class Main{public static void main(String[]args){System.out.println("Hi");}}
```

Лучше:

```java
public class Main {
    public static void main(String[] args) {
        System.out.println("Hi");
    }
}
```

Отступы помогают видеть структуру программы.

Фигурные скобки показывают блоки кода.

***

### 4.9. Фигурные скобки

Фигурные скобки `{}` обозначают блок.

```java
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}
```

Внешний блок — класс.\
Внутренний блок — метод `main`.

Позже такие блоки будут у условий и циклов:

```java
if (age >= 18) {
    System.out.println("Доступ разрешён");
}
```

***

### 4.10. Пакеты

В больших проектах классы объединяют в пакеты.

Пример:

```java
package ru.college.app;
```

Пакеты помогают организовать код.

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

***

### 4.11. Несколько классов в проекте

Допустим, есть класс `Student`.

Файл `Student.java`:

```java
public class Student {
    String name;
    int age;
}
```

Файл `Main.java`:

```java
public class Main {
    public static void main(String[] args) {
        Student student = new Student();

        student.name = "Anna";
        student.age = 18;

        System.out.println(student.name);
    }
}
```

Так проект начинает состоять из нескольких файлов.

Это важный шаг к нормальной разработке.

***

### 4.12. Почему не нужно бояться нескольких файлов

Новички часто хотят держать весь код в одном файле. Так кажется проще.

Но чем больше программа, тем хуже такой подход.

Если всё лежит в одном файле:

* трудно читать;
* трудно искать ошибки;
* трудно переиспользовать код;
* трудно работать в команде.

Нормальная программа делится на классы.

***

### 4.13. Первый проект с вводом

```java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Введите имя: ");
        String name = scanner.nextLine();

        System.out.println("Привет, " + name);
    }
}
```

Разбор:

```java
import java.util.Scanner;
```

Подключаем класс `Scanner`.

```java
Scanner scanner = new Scanner(System.in);
```

Создаём объект для чтения ввода.

```java
String name = scanner.nextLine();
```

Считываем строку.

```java
System.out.println("Привет, " + name);
```

Выводим результат.

***

### 4.14. Мини-проект главы: анкета студента

Задача: написать программу, которая спрашивает данные студента и выводит анкету.

Пример работы:

```
Введите имя: Анна
Введите возраст: 18
Введите группу: ИСП-21

Анкета:
Имя: Анна
Возраст: 18
Группа: ИСП-21
```

Код:

```java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Введите имя: ");
        String name = scanner.nextLine();

        System.out.print("Введите возраст: ");
        int age = scanner.nextInt();
        scanner.nextLine();

        System.out.print("Введите группу: ");
        String group = scanner.nextLine();

        System.out.println();
        System.out.println("Анкета:");
        System.out.println("Имя: " + name);
        System.out.println("Возраст: " + age);
        System.out.println("Группа: " + group);
    }
}
```

Обратите внимание на строку:

```java
scanner.nextLine();
```

после `nextInt()`. Она нужна, чтобы убрать оставшийся перенос строки.

***

### 4.15. Связь с Android

В консольной Java-программе ввод выполняется через `Scanner`.

В Android ввод выполняется через `EditText`.

Консоль:

```java
String name = scanner.nextLine();
```

Android:

```java
String name = nameInput.getText().toString();
```

Консольный вывод:

```java
System.out.println("Привет, " + name);
```

Android-вывод:

```java
resultText.setText("Привет, " + name);
```

То есть логика похожа. Меняется способ ввода и вывода.

***

### 4.16. Типичные ошибки новичков

#### Ошибка 1. Не выбран JDK

Проект создан, но Java не запускается.

Нужно проверить настройки проекта и указать JDK.

#### Ошибка 2. Нет метода main

Если нет метода `main`, обычная консольная программа не знает, откуда запускаться.

#### Ошибка 3. Неправильное имя класса

Файл называется `Main.java`, а класс внутри иначе.

#### Ошибка 4. Забыли импорт Scanner

```java
Scanner scanner = new Scanner(System.in);
```

Если нет:

```java
import java.util.Scanner;
```

будет ошибка.

#### Ошибка 5. Проблема nextInt и nextLine

После числового ввода строка может считаться неправильно.

***

### 4.17. Как могут спросить на экзамене

#### Вопрос

Что нужно установить для разработки на Java?

#### Хороший ответ

> Для разработки на Java нужен JDK и среда разработки, например IntelliJ IDEA. JDK содержит инструменты для компиляции и запуска Java-программ, а IDE помогает писать и запускать код.

#### Вопрос

Зачем нужна среда разработки?

#### Хороший ответ

> Среда разработки помогает создавать проект, писать код, видеть ошибки, запускать программу и управлять файлами. Но она не заменяет знание языка.

#### Вопрос

Чем консольная программа отличается от Android-приложения?

#### Хороший ответ

> В консольной программе ввод и вывод происходят через консоль, например через Scanner и System.out.println. В Android ввод и вывод происходят через элементы интерфейса: EditText, Button, TextView.

***

### 4.18. Практические задания

#### Задание 1. Первый вывод

Создайте программу, которая выводит:

```
Я изучаю Java
```

#### Задание 2. Несколько строк

Выведите:

```
Имя: ...
Группа: ...
Цель: изучить мобильную разработку
```

#### Задание 3. Ввод имени

Программа должна спросить имя и вывести приветствие.

#### Задание 4. Анкета

Программа должна спросить:

* имя;
* возраст;
* группу;
* любимый предмет.

Затем вывести анкету.

#### Задание 5. Ошибки

Специально сделайте три ошибки:

1. Уберите `;`.
2. Уберите импорт Scanner.
3. Измените имя класса.

Запишите, какие ошибки показала IDE.

***

### 4.19. Вопросы для самопроверки

1. Что такое JDK?
2. Что такое IDE?
3. Что такое IntelliJ IDEA?
4. Что такое Android Studio?
5. Зачем нужен метод main?
6. Как вывести текст в консоль?
7. Как считать строку через Scanner?
8. Почему после nextInt иногда нужен nextLine?
9. Почему код нужно форматировать?
10. Почему большие программы делят на несколько файлов?

***

## Итог по главам 1–4

После этих глав вы должны понимать:

* что такое программа;
* что такое алгоритм;
* почему компьютер выполняет команды буквально;
* как устроена базовая работа памяти;
* чем примитивы отличаются от ссылочных типов;
* что такое ссылка и null;
* как Java-код проходит путь от `.java` до выполнения;
* что такое JDK, JVM и IDE;
* как создать первый проект;
* как написать и запустить простую Java-программу;
* почему всё это пригодится в Android-разработке.

Если эти темы понятны, можно переходить к следующему блоку: переменные, типы данных, ввод, условия и первые вычисления.
