Skip to content

4. Основы Java

Daniil Shatukhin edited this page May 5, 2022 · 2 revisions

Что это такое

Java — строго типизированный объектно-ориентированный язык программирования общего назначения, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Разработка ведётся сообществом, организованным через Java Community Process; язык и основные реализующие его технологии распространяются по лицензии GPL. Права на торговую марку принадлежат корпорации Oracle.

Википедия

Java испытал на себе влияние языков C и C++, перенял от них некоторые структурные аспекты, но и упростил написание кода. Основная особенность Java в том, что код, написанный на этом языке может переносится на разные платформы без сильного изменения. Если на C++ код пишется под конкретную платформу и опирается на ее возможности, то код Java пишется под JVM (Java Virtual Machine), которая исполняет его. Таким образом разработчик не зависит от операционной системы и платформы.

Помимо этого, в Java реализовано автоматическое управление памятью. Если в C/C++ разработчик самостоятельно должен следить за жизненным циклом объектов и избегать утечек памяти, то Java делает это самостоятельно, что также упрощает и ускоряет написание кода.

Java нашла применение в веб-разработке (бэкенд сервисов), мобильной разработке (Android), геймдеве (Minecraft) и других сферах.

Структура Java-кода

Java построен на принципах ООП (объектно-ориентированного программирования), поэтому класс — базовая единица кода на Java. Всю программу на Java можно представить как взаимодействие набора классов и объектов. Класс может содержать в себе данные в виде переменных и логику программы в виде методов.

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

Пример:

public class FirstClass {
    public static void main(String[] args) {
       // ... код ... 
    }
}

Пример простого класса, который хранит в себе данные о человеке и выводит их

class Person{
    String name;    // имя
    int age;        // возраст

    void displayData() {
        System.out.printf("Name: %s \tAge: %d\n", name, age);
    }
}

Типы данных

в Java предусмотрены следующие типы данных:

  • boolean — логические тип данных, хранит в себе значение true и false.
boolean isTrue = true;
boolean isFalse = false;
  • byte — целочисленный тип, хранит целое число от -128 до 127 и занимает 1 байт памяти.
byte a = -128;
byte b = 127;
  • short — целочисленный тип, хранит целое число от -32768 до 32767 и занимает 2 байта памяти.
short a = -32768;
short b = 32767;
  • int — целочисленный тип, хранит целое число от -2147483648 до 2147483647 и занимает 4 байта памяти.
int a = -2147483648;
int b = 2147483647;
  • long — целочисленный тип, хранит целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 и занимает 8 байт памяти.
long a = –9223372036854775808;
long b = 9223372036854775807;
  • float — хранит число с плавающей точкой от -3.4E+38 до 3.4E+38.
float a = 8.5F;
float b = -3.2F;
  • double — хранит число с плавающей точкой от -1.7E+308 до 1.7E+308.
double a = 8.5;
double b = -3.2;
  • char — хранит одиночный символ и занимает 2 байта памяти.
char a = 'a';
  • String — строковые переменные, не представляют собой примитивы и хранят в себе целые строки.
String name = "Alex";

Операторы

Арифметические операторы

Оператор Описание
+ Складывает значение по обе стороны
- Вычитает правый операнд из левого
* Умножает значения по обе стороны от оператора
/ Делит левый операнд на правый
% Возвращает остаток от деление левого операнда на правый
++ Инкремент - увеличение операнда на 1
-- Декремент - уменьшение операнда на 1

Пример:

public class Test {

  public static void main(String args[]) {
     int a = 10;
     int b = 20;
     int c = 25;
     int d = 25;
     System.out.println("a + b = " + (a + b));
     System.out.println("a - b = " + (a - b));
     System.out.println("a * b = " + (a * b));
     System.out.println("b / a = " + (b / a));
     System.out.println("b % a = " + (b % a));
     System.out.println("c % a = " + (c % a));
     System.out.println("a++   = " +  (a++));
     System.out.println("b--   = " +  (a--));
     // Проверьте разницу в d++ и ++d
     System.out.println("d++   = " +  (d++));
     System.out.println("++d   = " +  (++d));
  }
} 

Выполнение кода даст следующее:

a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5
a++   = 10
b--   = 11
d++   = 25
++d   = 27

Операторы сравнения

Оператор Описание
== Равно
!= Неравно
> Больше
< Меньше
>= Больше или равно
<= Меньше или равно

Логические операторы

  • && - логическое «И»;
  • || - логическое «ИЛИ»;
  • ! - логическое «НЕ».

Условные конструкции

В Java, как и в других ЯП, существуют условные конструкции, которые помогают направить выполнение кода в нужную сторону, а влияет на принятие решения условие.

Конструкция if/else

Конструкция if/else проверяет истинность условия и в зависимости от результата либо выполняет блок кода, либо игнорирует его. На естественном языке конструкцию можно представить так:

если (это выражение верно) {
    выполни этот код
}

Пример:
В этом случае, если условие окажется верным, то выполнится код в фигурных скобках.

int a = 6;
int b = 4;
if (a > b) {
    System.out.println("Первое число больше второго");
}

Если мы хотим сделать что-то даже в том, случае, если условие окажется ложным, то можно применить else. На естественном языке это выглядит так:

если (это выражение верно) {
    выполни этот код
}
иначе {
    выполни этот код
}

Пример:
В этом случае, если условие окажется верным, то выполнится код в фигурных скобках после if, а если окажется ложным, то после else.

int a = 6;
int b = 4;
if (a > b) {
    System.out.println("Первое число больше второго");
}
else {
    System.out.println("Первое число меньше второго");
}

Можно использовать проверку сразу нескольких условий, которые будут проверяться поочередно:

int a = 6;
int b = 4;
if (a > b) {
    System.out.println("Первое число больше второго");
}
else if {
    System.out.println("Первое число меньше второго");
}
else {
    System.out.println("Числа равны");
}

Конструкция switch/case

Конструкция switch/case схожа с if/else и помогает проверять сразу несколько условий. После слова switch в скобках указывается сравнимое значение. Это значение последовательно сравнивается со значениями после слова case. Если найдется совпадение, то выполнится эта часть кода. В конце блоков необходимо ставить ключевое слово break, иначе выполнение кода не остановится на одном блоке.

Пример:
Значение num равняется восьми и именно оно указано для сравнения после слова switch. Выполнится блок кода case 8:, так как именно там значения совпадут.

int num = 8;
switch(num){
             
    case 1: 
        System.out.println("число равно 1");
        break;
    case 8: 
        System.out.println("число равно 8");
        num++;
        break;
    case 9: 
        System.out.println("число равно 9");
        break;
    default:
        System.out.println("число не равно 1, 8, 9");
}

Также можно определить несколько значений для одного блока case. Код будет выполнен при совпадении с одним из значений. Есть возможность добавить блок, который будет выполнен в любом случае, даже если совпадения не найдутся. Такой блок указывается после ключевого слова default.

Пример:

int num = 3;
int output = 0;
switch(num){
     
    case 1: 
        output = 3;
        break;
    case 2: 
    case 3: 
    case 4: 
        output = 6;
        break;
    case 5: 
        output = 12;
        break;
    default:
        output = 24;
}
System.out.println(output);

Содержание
Командная строка
Кодировка UTF-8 в Java
Список полезных книг для автоматизаторов тестирования на языке Java
Список полезных книг для автоматизаторов тестирования на языке Python Структура проекта Github README.md

Java:
1. Вводное занятие. Сразу к практике.
2. Git. GitHub. Погружаемся.
3. Погружаемся в инструментарий и библиотеки
4. Основы Java
5. Продолжаем разрабатывать автотесты. PageObjects
6. JUnit 5
7. Allure Reports
8. Работа с файлами
9. Selenide #1
10. Jenkins. Создаем первую задачу
11. Управляем параметрами в коде и в Jenkins
12. Отправляем уведомления о результатах прохождения автотестов
13. Учимся быстро разрабатывать проекты для тестовых заданий
14. Selenoid
15. Библиотека Owner
16. REST API. Пишем автотесты с Rest assured
17. REST API. Декомпозируем UI тесты. Подключаем отчетность
18. REST API. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Allure TestOps
21. Переезд на собственную инфраструктуру Java

Python:
1. Вводное занятие. Сразу к практике!
2. Погружаемся в инструментарий и библиотеки
3. Git. GitHub. Погружаемся.
4. Основы Python
5. Selene #1
6. Основы Python. Часть II
7. Основы Python. Часть III
8. Page Object
9. Allure Reports
10. Работаем с файлами Python
11. Jenkins. Создаем первую задачу и управляем параметрами Python
12. Телеграм бот. Отправляем уведомления о результатах прохождения тестов
13. Pytest
14. Selenoid
15. Pytest. Часть II
16. Venv, Poetry и управление зависимостями проекта
17. REST API. Часть I. Пишем автотесты с Requests
18. REST API. Часть II. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Мобильная автоматизация #2. Разрабатываем автотесты с эмулятором Android устройства
21. Allure TestOps
22. Переезд на собственную инфраструктуру Python

Clone this wiki locally