2. Переменные, типы данных.

### **Комментарии**

**Комментарии** служат для разъяснения кода. Они являются своеобразными подсказками другим программистам или вам (например, если ваша программа будет слишком большой, вы сможете забыть, что значит этот код или для чего конкретно создавалась данная переменная, - тогда комментарии помогут вспомнить смысл данного блока кода). Комментарии бывают трех типов:

* Многострочный комментарий. Он может располагаться на одной или нескольких строках между группами симоволов / \* и \*/:

```
/*Многострочный

```

```
Комментарий*/

```

* Однострочный комментарий. Комментарий может

располагаться только на одной строке начиная с пары символов / / и до конца строки:

```
// Комментарий

```

* Многострочный тип комментариев для документирования кода. Комментарии располагаются между /\*\* и \*/ на одной или нескольких строках:

```
/** код

```

```
Комментарий */

```

Прокомментируем нашу первую программу на языке Java с использованием комментариев.

```
// Программа создана для обучения.

```

```
public class MyProgram {

```

```
        /** Выводим на экран строку Это Ваша первая программа

```

```
        на языке Java */

```

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

```

```
               System.out.println ("Это Ваша первая программа на Java");} }

```

```
/*Конец программы*/

```

### **Работа с переменными**

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

Имена переменных называются **идентификаторами**. Названия идентификаторов выбираются по следующим правилам:

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

Таблица 1. Ключевые слова, которые не должны присутствовать в названиях идентификаторов

Для того чтобы записать данные, необходимо объявить переменную определенного типа. Внимание! Операторы программы разделяются точкой с запятой!

**Объявление переменной:**

тип ИмяПеременной;

Для того чтобы переменной присвоить значение, необходимо инициализировать переменную.

**Инициализация переменной:**

ИмяПеременной = НачальноеЗначение;

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

тип ИмяПеременной = НачальноеЗначение;

**Объявление нескольких переменных:**

тип ИмяПеременной1, ИмяПеременной2, ИмяПеременной3;

**Объявление с инициализацией нескольких переменных:**

тип ИмяПеременной1 = НачальноеЗначение1, ИмяПеременной2 = НачальноеЗначение2, ИмяПеременной3 = НачальноеЗначение3;

### **Числовые типы данных**

Существут целочисленные и вещественные типы данных.

**Целочисленные типы (int)** - обозначают множества целых чисел в различных диапазонах.

Чтобы объявить и присвоить переменной число целого типа данных, используйте следующий синтаксис в Java:

```
int myNumber; // Объявление переменной

```

```
myNumber = 5; // Инициализация переменной

```

Вы можете объединить эти операции:

```
int myNumber = 5; // Объявление с инициализацией переменной

```

Также можно описать несколько переменных целого типа:

`int myNumber1 = 5, myNumber2 = 30, myNumber3 = -5; // Объявление с инициализацией нескольких переменных`

#### **Задачи на работу с целочисленным типом данных**

1.    Объявите переменную с именем m. Запишите в переменную ваш возраст. Выведите на экран значение переменной m. Вывод на экран описывается оператором System.out.println (ИмяПеременной).

На выходе: одно
целое число

2.    Вечером температура воздуха составляла 5 градусов по Цельсию. За ночь температура понизилась на 7 градусов. Объявите переменную с инициализацией n, содержащую значение утренней температуры. Выведите на экран значение переменной
n.

На выходе: одно целое число

**Вещественные типы (double)** - обозначают множества вещественных чисел (числа имеют дробные части) в различных диапазонах.

Чтобы объявить и присвоить переменной число вещественного типа данных, используйте следующий синтаксис в Java:

```
double myNumber; // Объявление переменной

```

```
myNumber = 5.0; // Инициализация переменной

```

Вы можете объединить эти операции:

```
double myNumber = 5.0; // Объявление с инициализацией переменной

```

Также можно описать несколько переменных вещественного типа:

```
double myNumber1 = 5.0, myNumber2 = 3.14, myNumber3 = -5.667; // Объявление
с инициализацией нескольких переменных

```

#### **Задачи на работу с вещественным типом данных**

1.    Объявите переменную с именем m. Запишите в переменную значение числа Пи до 2-го знака после запятой. Выведите на экран значение переменной m. Вывод на экран описывается
оператором System.out.println (ИмяПеременной). На выходе: одно вещественное число

2.    Абсолютный ноль по шкале Кельвина или -273,15 градусов по Цельсию считается самой низкой из возможных температур. Объявите переменную с инициализацией n, содержащую значение абсолютного нуля. Выведите на экран значение переменной n. На выходе: одно вещественное число

В Java поддерживаются следующие арифметические операторы с числовыми типами данных, табл. 2.

Таблица 2. Арифметические операторы

Рассмотрим каждую арифметическую операцию на примерах для целого и вещественного типов данных, табл. 3. Расчеты делались в программе, в соответствии с рис. 10.

Таблица 3. Арифметические операторы для целого и вещественного типов данных.

5.0 (double)
5 (int)
2.0 (double)
2.0 (double)
7.0 (double)
5.0 (double)
5 (int)
5 (double)
2.0 (double)
2.0 (double)
2 (int)
3.0 (double)
3.0 (double)
 \*
5.0 (double)
5 (int)
2.0 (double)
2.0 (double)
10.0 (double)
 /
5 (int)
5.0 (double)
5.0 (double)
2.0 (double)
2.0 (double)
2 (int)
2.5 (double)
2.5 (double)
 %
5 (int)
5.0 (double)
2.0 (double)
2.0 (double)
1.0 (double)
1.0 (double)

Далее из табл 2. следуют операторы под названием инкремент (++) и декремент (--). Один из них (инкремент) прибавляет к значению переменной единицу, другой (декремент), наоборот, убавляет единицу. Данные операторы
указываются без пробела рядом со значением переменной.

```
int а = 4;

```

```
a++; // переменная а примет значение = 5

```

Аналогично работает оператор декремента.

Последние пять операторов в таб. 2. используются следующим образом:

```
а += b;

```

`аналогично записи:`

```
а = а + b;

```

#### **Задачи на работу с арифметическими операторами**

1. Программа выполняет различные (по вариантам) математические действия над двумя числами. Выведите результат на экран.

На выходе: целое или вещественное число.

2. Программа вычисляет последнюю цифру d заданного числа n.

На выходе: целое число d.

3. В переменной n хранится двузначное число. Создайте программу, вычисляющую и выводящую на экран сумму цифр n.

На выходе: целое число.

4. В переменной n хранится трёхзначное число. Создайте
программу, вычисляющую и выводящую на экран сумму цифр n.

На выходе: целое число.

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

На выходе: целое число.

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

На выходе: целое число.

7. Программа вычисляет дробную часть числа x (т.е. тоже число с нулевой целой частью).

На выходе: вещественное число (пример, 2.52 -> 0.52).

8. Программа вычисляет площадь прямоугольного треугольника s по длине двух катетов a, b.

На выходе: вещественное число (пример, 3.5, 4.2333 -> 7.4082).

9. Программа вычисляет средний балл ученика за решение четырех задач по оценкам (от 2 до 5).

На выходе: одно вещественное число.

10. Программа вычисляет площадь круга s и длину окружности p по введённому радиусу r.

На выходе: два вещественных числа.

11. В школе решили набрать три новых математических класса. Так как занятия по
математике у них проходят в одно и то же время, было решено выделить кабинет для каждого класса и купить в них новые парты. За каждой партой может сидеть не
больше двух учеников. Известно количество учащихся в каждом из трёх классов. Сколько всего нужно закупить парт чтобы их хватило на всех учеников? Программа
получает на вход три натуральных числа: количество учащихся в каждом из трех классов.

На выходе: целое число.

12. Длина Московской кольцевой автомобильной дороги —109 километров. Байкер Вася стартует с нулевого километра МКАД и едет со скоростью v километров в час. На какой отметке он остановится через t часов?

Программа получает на вход значения двух переменных v и t (задается в программе). Если v>0, то Вася движется в положительном направлении по МКАД, если же значение v<0, то в отрицательном.

На выходе: целое число от 0 до 108 — номер отметки, на которой остановится Вася.

13. В некоторой школе занятия начинаются в 9:00. Продолжительность урока — 45 минут, после 1-го, 3-го, 5-го и т.д. уроков перемена 5 минут, а после 2-го, 4-го, 6-го и т.д. — 15 минут. В переменной указывается номер урока (число от 1 до 10). Определите, когда заканчивается указанный урок.

На выходе: два целых числа: время окончания урока в часах и минутах.

14. Даны значения двух моментов времени, принадлежащих одним и тем же суткам: часы, минуты и секунды для каждого из моментов времени. Известно, что второй момент времени наступил не раньше первого. Определите, сколько секунд прошло между двумя моментами времени. Программа на вход получает три целых числа: часы, минуты, секунды, задающие первый момент времени и три целых числа, задающих второй момент времени (запишите их в 6 различных переменных).

На выходе: целое число, секунды между этими моментами времени.

### **Символы и строки**

**Переменные Символьного типа данных**

В Java символ - свой собственный тип, и это не просто число. Синтаксис:

```
char c = 'g';

```

**Переменные Строковых типов данных**

Чтобы объявить и присвоить строку используйте следующий синтаксис в Java, в котором в двойных кавычках (" ") задается значение строкового типа:

```
String myName; // Объявление переменной

```

```
myName = "Петр"; // Инициализация переменной

```

Вы можете объединить эти операции:

```
String myName = "Петр"; // Объявление с инициализацией переменной

```

В Java присутствует конкатенация (объединение) строк при помощи оператора +.

```
String s1 = "Как дела? ";

```

```
String s2 = "Хорошо! ";

```

```
String s3 = s1 + s2; // Результат равен: Как дела? Хорошо!

```

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

```
int num = 5;

```

```
String s = "У меня есть " + num + " печенек"; // Результат равен: У меня есть 5 печенек

```

Результат работы программы представлен на рис. 11.

### **Преобразование типов данных**

Для преобразования строки в целый тип используется конструкция Integer.parseInt(String s):

```
String number = "10";

```

```
int result = Integer.parseInt(number);

```

Для преобразования числа целого типа данных в строку
используется конструкция Integer.toString (int i):

```
int number = 10;

```

```
String result = Integer.toString(number);

```

Для преобразования строки в вещественный тип используется конструкция Double.parseDouble(String s):

```
String number = "10.3";

```

```
double result = Double.parseDouble(number);

```

Для преобразования числа вещественного типа данных в строку используется конструкция Double.toString (double d):

```
double number = 10.3;

```

```
String result = Double.toString(number);

```

#### **Задачи на работу со строковыми типами данных**

1.   Напишите программу, которая записывает в переменную целое число (например, 1534) и выводит текст, аналогичный приведенному в примере (пробелы важны!).

На выходе: строка (пример, Следующий номер за 1534 номер1535.

Предыдущий номер перед 1534 это 1533.)

2.   Программа выполняет различные (по вариантам) математические действия над двумя числами, выводя на экран развёрнутую форму записи действия.

На выходе: строка (пример, Первое число: 1 Второе число: 2 -> 1 + 2 = 3)

3. Программа хранит Фамилию, Имя, Отчество пользователя в трех разных переменных, после чего выводит приветственное сообщение на экран.

На выходе: строка (пример, s1 = Иванов s2 =Иван s3 = Иванович -> Здравствуйте, Иванов Иван Иванович!)

4. n школьников делят k яблок поровну, неделящийся остаток остается в корзинке. Программа вычисляет сколько яблок достанется каждому школьнику, и сколько яблок останется в корзинке.

На выходе: строка(пример, Первое число: 6, Второе число: 50 -> Яблок достанется каждому: 8 шт. Яблок останется в корзине: 2 шт.).

5. За день машина проезжает n километров. Программа вычисляет сколько дней нужно, чтобы проехать маршрут длиной m километров?

На выходе: строка (пример, n 700, m 750 -> Количество дней пути: 2)

6. Ежемесячная зарплата водителя автобуса составляет 15320,45 руб. Выведите на экран годовой доход водителя.

На выходе: строка (пример, а = 15320,45 -> Годовой доход: 183845 руб. 4 копейки)

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

На выходе: строка (пример, Площадь прямоугольника со сторонами 3 см и 4 см равна 12 см, Площадь квадрата со стороной 3 см равна 9 см)

### **Логический тип данных**

Чтобы объявить переменную логического типа и присвоить ей значение используйте следующий синтаксис в Java.

```
boolean b; // Объявление переменной

```

```
b = true; // Инициализация переменной

```

Любая переменная может принять только два значения: true (истина) или false (ложь).

Вы можете объединить эти операции:

```
boolean b = true; // Объявление с инициализацией переменной

```

В Java также поддерживаются и логические операторы, представленные в табл. 4.

Таблица 4. Логические операторы

Первые шесть операторов называются операторами сравнения. Они позволяют сравнивать числа и возвращают либо значение true, либо false. Последующие три оператора работают с данным типа boolean.

Следующие два оператора используются для двух условий сразу, т.е. указаны два условия и между ними ставится оператор «условное И». Если они оба будут равны true, то выводится значение true; если хотя бы одно из них будет false, то итог будет false. Оператор «условное ИЛИ» будет возвращать значение true, если хотя бы одно из условий будет true. Они обычно используются в конструкции if (об этом мы будем говорить в следующих разделах).

Далее приведем схему использования логических операторов в табл. 5. Расчеты для таблицы делались в программе, в соответствии с рис. 12.

Таблица 5. Значения логических операторов для двух переменных

Приведем пример использования отрицания, в табл. 6. Расчеты для таблицы делались в программе, в соответствии с рис. 13.

Таблица 6. Значения логических операторов для двух переменных / для одной переменной

 2
 Переменная 1
 true
 false

Приведем пример использования логических и условных И/ИЛИ, в табл. 7. Расчеты для таблицы делались в программе, в соответствии с рис. 14.

Таблица 7. Значения логических операторов для двух переменных

### **Константы**

**Константа** - это именованная ячейка памяти, способная хранить данные, которые потом изменяться не будут. Константа - это фактически переменная, объявленная с ключевым словом final (оно как раз и говорит о том, что значение переменной изменяться не будет).

**Объявление константы:**

final тип ИмяКонстанты;

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

**Инициализация константы:**

ИмяКонстанты = Значение;

**Объявление с инициализацией константы:**

final тип ИмяКонстанты = Значение;

**Объявление нескольких констант:**

final тип ИмяКонстанты1, ИмяКонстанты2, ИмяКонстанты3;

**Объявление с инициализацией нескольких констант:**

final тип ИмяКонстанты1 = Значение1, ИмяКонстанты2 = Значение2, ИмяКонстанты3 = Значение3;

Чтобы объявить и присвоить константе число целого типа
данных, используйте следующий синтаксис в Java:

```
final int myNumber; // Объявление константы

```

```
myNumber = 5; // Инициализация константы

```

Вы можете объединить эти операции:

```
final int myNumber = 5; // Объявление с инициализацией константы

```

Также можно описать несколько констант, например, целого
типа:

```
final int myNumber1 = 5, myNumber2 = 30, myNumber3 = -5; // Объявление с инициализацией нескольких констант

```

Попытка переприсвоить значение константы в программе приведет к ошибке, рис. 15.

#### **Задачи на работу с константами**

1.    Объявите константу с именем Pi. Запишите в константу значение числа Пи до 2-го знака после запятой. Выведите на экран значение длины окружности.

На выходе: строка (пример, Длина окружности с диаметром 5 см равна 15.70, а с диаметром 10 см - 31.40)