Skip to content

Latest commit

 

History

History
389 lines (295 loc) · 16.9 KB

conspect.md

File metadata and controls

389 lines (295 loc) · 16.9 KB

Конспект. Базовый синтаксис Java

Введение

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

  • процессор, основной элемент любой вычислительной системы, выполняет команды (операции) над данными;
  • память, служит для хранения данных (оперативного и долговременного хранения);
  • устройства ввода, служат для ввода данных и управления;
  • устройства вывода, для вывода (передачи) информации.

Программное обеспечение - совокупность инструкций и данных, позволяющая аппаратному обеспечению выполнять вычислительные функции (операции).

Как работает программа

Этапы развития разработки программного обеспечения:

  • Первые программы писали в виде машинных кодов - команд, которые способен выполнять процессор.
  • Первыми языками программирования были языки класса «ассемблер», являющиеся языками специфичными для конкретной архитектуры вычислительной системы.
  • Первые языки программирования высокого уровня были процедурные (императивная парадигма), программа организуется в виде последовательности подпрограмм (процедур). К этому классу языков относятся: FORTRAN (1954-57), ALGOL(1960-68), BASIC(1964), PASCAL(1970), С (1972).
  • Дальнейшее развитие языков программирования привело к созданию объектно-ориентированной парадигмы программирования. Концепция ООП: представление программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса. Классы могут образовывать иерархию наследования, один объект расширяет (или переопределяет) свойства и поведение объекта родителя. К первым языкам данного класса относятся: SIMULA (1967), Smalltalk (1969-1980), C++ (1983).

Этапы генерации программы.

  • Компиляция – процесс перевода (трансляции) программы из исходного текста в исполняемый код процессора.
  • Компиляция в машинный код. Упрощенная схема:
Исходный код → Машинный код

Проблема переносимости: программы создаваемы по схемы представленной выше, ориентированы на работу в конкретной среде и на конкретной архитектуре аппаратного обеспечения.

  • Виртуальная машина. Концепция программной оболочки эмулирующей аппаратное обеспечение некоторой платформы. Виртуальная машина исполняет некоторый машинно-независимый код (байт-код, p-код). Таким образом, программы, созданные для исполнения на вириальной машине, не зависят от аппаратного обеспечения вычислительной системы и окружения (ОС). Упрощенная схема:
Исходный код → байт-код → Машинный код

История Java

  1. В 1990 году в компании Sun Microsystems зародился проект — Oak. Идеологом языка был Джеймс Гослинг. В основу его разработки заложены концепции:
    • переносимости кода;
    • объектно-ориентированного программирования;
    • си подобный синтаксис.

Язык планировался для разработки приложений для микроконтроллеров. В 1996 году была представлена первая версия языка Java.

История выпуска версий

  • JDK 1.0 — 1996г.
  • JDK 1.1 — 1997г.
  • J2SE 1.2 — 1998г.
  • J2SE 1.3 — 2000г.
  • J2SE 1.4 — 2002г.
  • J2SE 5.0 — 2004г.
  • Java SE 6 — 2006г.
  • Java SE 7 — 2011г.
  • Java SE 8 — 2014г.
  • Java SE 9 — 2017г.
  • ...
  • Java SE 11 — 2018.
  • ...
  • Java SE 17 — 2021.

Ключевые моменты развития языка:

  • 1996 (JDK 1.0) — выпуск первой версии Java.
  • 2004 (J2SE 5.0) — в язык Java были добавлены: перечисляемы типы (enum), аннотации (возможность добавлять в текст программы метаданные, влияющие на исполнение кода), средства обобщённого программирования (generics), цикл foreach для коллекции объектов, и др.
  • 2014 (Java SE 8) - в язык Java были добавлены: поддержка лямбда-выражений, потоки (stream api) для работы с коллекциями, ссылки на методы и конструкторы и др.

Java Virtual Machine (JVM)

JVM виртуальная машина Java — основная часть исполняющей системы Java. Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java (javac).

Для разработки программа на языке Java используют комплект разработчика приложений на языке Java — JDK (Java Development Kit), включающий в себя компилятор Java (javac), стандартные библиотеки классов Java.

Файлы в проектах Java программ

  • .java – текстовый файл непосредственно с java-кодом;
  • .class – файл, получаемый на выходе процесса компиляции из java-кода в байт-код;
  • .jar – пакет .class-файлов, готовый к компиляции в низкий код (исполнению на JVM).

Метод main()

Метод main() должен быть открытым (public) и статическим (static); он должен получать в аргументе массив объектов String (String[] args) и не возвращать никакого значения (void):

public static void main (String[] myArgs)

Горячие клавиши в intellij IDEA

psvm + Tab/Enter

Простая программа на языке Java

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

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

        System.out.println("Привет " + name + "!");
    }
}
Output:
Введите имя: 
Иван
Привет Иван!

В примере программа состоит из: Класса Test, с методом main, внутри которого выполняется вызов метода println для вывода тестовой строки в стандартный поток вывода (консоль) и метод nextLine() у класса Scanner для ввода строки через консоль.

Типы данных в языке Java

1. Примитивные типы

1.1 Целочисленные типы

Тип Размерность
byte 8 бит от -128 до 127
short 16 бит от -32768 до 32767
char 16 бит символ UTF-16 (буквы и цифры)
int 32 бит от -2147483648 до 2147483647
long 64 бит от - 9223372036854775808 до 9223372036854775807

1.2 Типы с плавающей точкой

Тип Размерность
float 32 от -1.4e-45f до 3.4e+38f
double 64 от -4.9e-324 до 1.7e+

1.3 Логический тип

Тип Значение
boolean true (истина) или false (ложь)

2. Абстрактные типы (ссылочные типы)

Это все остальные типы: классы, перечисления и интерфейсы, а также массивы.

3. Строки

Это объекты класса String, в некоторых случаях обрабатываются отлично от всех остальных объектов. Строковые литералы записываются в двойных кавычках.

String name="Бенедикт Камбербэтч";

Важно!

Не сравнивайте с помощью оператора сравнения (==)!

String name1 = "Иван";
String name2 = "Иван";
String name3 = new String("Иван");;

System.out.println(name1 == name2); // true
System.out.println(name1 == name3); // false
        
System.out.println(name1.equals(name2)); // true
System.out.println(name1.equals(name3)); // true

4. Массивы

int[]array1 = new int[10]; // Массив из 10 нулей
int[]array2 = {1, 2, 3}; // Массив [1, 2, 3]
int[][]array3 = new int[5][5]; // Двумерный массив 5x5 заполненный нулями
int[][]array4 = {{1, 2}, {3, 4}, {5, 6}}; // Двумерный массив 3x3 заполненный заданными значениями.

Объявление и инициализация переменной

Общая схема: тип данных имя переменной [ = значение]

public class Test {
    byte b = 64;
    short s = 1024;
    char c = 'C';
    int i = 2048;
    long l = 4194304;
    boolean bv = true;
    double f = 1.2;
    String name = "James Gosling";

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

if – else

Состоит из логического выражения, после которого следует один или более операторов. Может сопровождаться дополнительным оператором else, который выполняется при ложном логическом выражении.

if (Логическое выражение) {
    // Выполняется, если истинно
} else {
    // Выполняется, если ложно
}

Тренарный оператор

Тренарный оператор - сокращенная форма if - else

<условие> ? <значение, если true> : <значение, если false>

Пример:

String result = age >= 18 ? "Все в порядке, проходите!" :"Этот фильм не подходит для вашего возраста!";

switch

Проверяет переменную на равенство в отношении списка значений.

switch (выражение) {
    case значение:
        // Операторы
        break; // необязательно
    case значение2:
        // Операторы
        break; // необязательно
    // Вы можете иметь любое количество операторов case.
    default: // необязательно
        // Операторы
}

switch (Java 17)

switch (выражение) {
    case значение -> // операторы
    case значение2 -> {
        // операторы
    }
    default: -> // операторы
}

Циклы

for

Обладает структурой управления повторений, что позволяет эффективно написать цикл, который должен выполниться определенное количество раз.

for (иници-я; логическое_выражение; обновление) {
    // Операторы
}

while

Многократно выполняет цель оператора до тех пор, пока данное условие верно.

while (Логическое выражение) {
    // Операторы
}

do-while

Похож на цикл while, отличие, что цикл do-while гарантированно выполнится, по крайней мере один раз.

do {
    // Операторы
} while (логическое выражение);

Блоки кода

if (x < y) { // начало блока
    x = y;
    y = 0;
} // конец блока
for (x = 0; x < 10; x++) { // начало блока
    System.out.println("Значение x: " + x);
    System.out.println("Значение y: " + y);
    y = y - 2;
} // конец блока

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

Оператор Значение
+ Сложение
- Вычитание
* Умножение
/ Деление
% Деление по модулю
++ Инкремент
+= Сложение с присваиванием
-= Вычитание с присваиванием
*= Умножение с присваиванием
/= Деление с присваиванием
%= Деление по модулю с присваиванием
-- Декремент

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

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

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

Оператор Значение
&& Логическое И
|| Логическое ИЛИ
! Логическое НЕ
& Побитовое И
| Побитовое ИЛИ
^ Побитовое исключающее ИЛИ
~ Побитовое НЕ

Комментарии в Java

Язык Java поддерживает однострочные и многострочные комментарии, они очень похожи на используемые в С/С++. Все символы недоступны внутри любых комментариев и игнорируются компилятором.

/**
* Это многострочный
* комментарий.
*/
// Это однострочный комментарий