#4 – Переменные в Джава. Типы данных

Переменные являются, практически, главным аспектом любого языка программирования. В ходе урока вы изучите что такое переменные, зачем они нужны и как с ними можно работать. Дополнительно вы ознакомитесь с типами данных в языке Java.
Видеоурок
Переменные невероятно важны, так как позволяют хранить информацию и использовать её в дальнейшем. Вначале может быть не совсем понятно зачем вообще что-то записывать в переменную, если можно просто оперировать значениями без них. Понимание переменных придет немного позже, когда мы начнем создавать более сложные программы и нам потребуется хранить информацию в каком-либо месте.
Переменные
Типы переменных в языке Java указываются перед названием переменной. От конкретного типа данных будет зависеть содержимое переменной. Если мы укажем что переменная с типом данных int (целые числа), то в неё мы не сможем записать строку или число с точкой.
В ходе программы мы можем записывать новые значения в переменную, но тип данных должен оставаться неизменным:
float some_value = 2.95f; some_value = 6.9f; // Записали новое значение
Рассмотрим все типы данных для создания переменных.
Целые числа
- byte — предназначен для хранения целых чисел. Диапазон чисел от -128 до 127, если число будет большим 127 или меньшим -128 , то выдастся ошибка;
- short — предназначен для хранения целых чисел. Диапазон чисел от -32768 до 32767;
- int — предназначен для хранения целых чисел. Диапазон чисел от -2147483648 до 2147483647;
- long — предназначен для хранения целых чисел. Диапазон чисел от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.
Разница между типами заключается только в диапазоне чисел, который можно записать в переменную. Также не используйте большие типы данных по типу long, если число маленькое, так как чем больше диапазон, тем больше памяти требуется компьютеру на конкретную переменную.
Числа с точкой
- float — для создания чисел с плавающей точкой. Диапазон чисел от от -3.4*10 38 до 3.4*10 38 ;
- double — для создания чисел с плавающей точкой. Диапазон чисел от от ±4.9*10 -324 до ±1.8*10 308 .
Прочие типы данных
- bool — логический тип данных. Предназначен для записи истинного (true) или ложного (false) значения;
- char — тип данных для работы с символами. Позволяет поместить в одинарных кавычках какой-либо символ;
- String — тип данных для текста. В двойных кавычках можно сохранить одно или множество слов.
Для создания переменной необходимо указать тип данных и её название. Также можно сразу же добавить к ней значение:
int a = 0; // Добавление значения сразу byte c; // Создание переменной без значения short b, y = 342; // Создание нескольких переменных
Для вызова переменной вы можете обратиться к ней по имени. Чтобы записать данные в переменную с типом float или double необходимо после числа дописать букву f или d соответсвенно.
Весь код будет доступен после подписки на проект!
Задание к уроку
Создание переменной
Создайте целочисленную переменную с наименьшим диапазоном чисел. Укажите для нее значение равное восьми.
Сколько переменных можно задать в программе java
Для хранения данных в программе предназначены переменные . Переменная представляет именованную область памяти, которая хранит значение определенного типа. Каждая переменная имеет тип, имя и значение. Тип определяет, какую информацию может хранить переменная или диапазон допустимых значений.
Переменные объявляются следующим образом:
тип_данных имя_переменной;
Например, определим переменную, которая будет называться x и будет иметь тип int :
int x;
В этом выражении мы объявляем переменную x типа int . То есть x будет хранить некоторое число не больше 4 байт.
В качестве имени переменной может выступать любое произвольное название, которое удовлетворяет следующим требованиям:
- имя может содержать любые алфавитно-цифровые символы, а также знак подчеркивания, при этом первый символ в имени не должен быть цифрой
- в имени не должно быть знаков пунктуации и пробелов
- имя не может быть ключевым словом языка Java
Кроме того, при объявлении и последующем использовании надо учитывать, что Java — регистрозависимый язык, поэтому следующие объявления int num; и int NUM; будут представлять две разных переменных.
Объявив переменную, мы можем присвоить ей значение:
int x; // объявление переменной x = 10; // присвоение значения System.out.println(x); // 10
Также можно присвоить значение переменной при ее объявлении. Этот процесс называется инициализацией :
int x = 10; // объявление и инициализация переменной System.out.println(x); // 10
Если мы не присвоим переменной значение до ее использования, то мы можем получить ошибку, например, в следующем случае:
int x; System.out.println(x);
Через запятую можно объявить сразу несколько переменных одного типа:
int x, y; x = 10; y = 25; System.out.println(x); // 10 System.out.println(y); // 25
Также можно их сразу инициализировать:
int x = 8, y = 15; System.out.println(x); // 8 System.out.println(y); // 15
Отличительной особенностью переменных является то, что мы можем в процессе работы программы изменять их значение:
int x = 10; System.out.println(x); // 10 x = 25; System.out.println(x); // 25
Ключевое слово var
Начиная с Java 10 в язык было добавлено ключевое слово var , которое также позволяет определять переменную:
var x = 10; System.out.println(x); // 10
Слово var ставится вместо типа данных, а сам тип переменной выводится из того значения, которое ей присваивается. Например, переменной x присваивается число 10, значит, переменная будет представлять тип int.
Но если переменная объявляется с помощью var, то мы обязательно должны инициализировать ее, то есть предоставить ей начальное значение, иначе мы получим ошибку, как, например, в следующем случае:
var x; // ! Ошибка, переменная не инициализирована x = 10;
Константы
Кроме переменных, в Java для хранения данных можно использовать константы . В отличие от переменных константам можно присвоить значение только один раз. Константа объявляется также, как и переменная, только вначале идет ключевое слово final :
final int LIMIT = 5; System.out.println(LIMIT); // 5 // LIMIT=57; // так мы уже не можем написать, так как LIMIT - константа
Как правило, константы имеют имена в верхнем регистре.
Константы позволяют задать такие переменные, которые не должны больше изменяться. Например, если у нас есть переменная для хранения числа pi, то мы можем объявить ее константой, так как ее значение постоянно.
Переменные в Java
Часто Вы можете услышать такое определение переменной:
- Переменная — это некоторый контейнер, в котором может храниться значение для дальнейшего использования в программе.
Помните, как в школе было: y = x + 1
И в зависимости от того, какие значения принимает переменная x, меняется значение переменной y.
Если x = 1, тогда x+ 1 =2
Если x = 2, тогда x +1 = 3
Если х = 1.5 , тогда x + 1 =2.5
В Java переменные играют такую же роль, как и в приведенном примере со школы y = x + 1. Они выполняют роль контейнера для разных значений, которые можно подставить в переменную. В приведённом примере — в переменную x.
Типы переменных в Java. Объявление переменной
В Java можно указать, какие именно значения может принимать переменная.
Для этого все переменные сгруппировали в 4 группы:
- Целочисленные (к ним относятся byte, short, int, long)
- С плавающей точкой (к ним относятся float, double)
- Символы (char)
- Логические (boolean)

Примечание: Итого 8 типов переменных (byte, short, int, long, float, double, char, boolean). Многоуважаемый Брюс Эккель выделяет еще и 9-й тип – так называемый тип void («пустое» значение). Но в этой статье мы рассмотрим 8 типов, как это обычно принято. Что же такое тип void мы разберёмся в теме, посвященной методам в Java.
Теперь давайте рассмотрим каждую группу переменных. И начнём с целочисленных.
Целочисленные: byte, short, int, long

Как видно из таблички, byte, short, int, long относятся к целочисленным, то есть к целым числам. Например, 1, 9, 1278, -5, -107 и т.д.
- byte может принимать значения от -128 до 127 и при этом занимает 1 байт памяти
- short принимает значения от -32768 до 32767 и занимает 2 байта памяти
- int от -2147483648 до 2147483647 и занимает 4 байта памяти
- long от -9223372036854775808 до 9223372036854775807 и занимает 8 байтов памяти
«Ну, хорошо», — скажете Вы. «Если byte, short, int и long отвечают все за целые числа, как мне понять какой именно тип нужно выбирать? » Помните детские задачки по математике, которые сейчас будут как нельзя кстати для объяснения за что отвечают byte, short, int, long.
Задача 1: 
У Димы 3 яблока, у Ани 2 яблока. Сколько яблок у Димы и Ани вместе?
Как видите, в задаче речь идет о целых яблоках. Не предполагается, что яблоки будут делить на части.
Значит, если бы мы писали код в Java, который бы предполагал решение данной задачи, мы бы использовали для переменных целочисленный тип. Остается понять только какой именно мы бы использовали: byte, short, int или long?
Всегда необходимо отталкиваться от контекста.
- Если мы знаем точно, что при решении данной задачи, даже если будут меняться значения, например, у Димы 50 яблок, у Ани 30, но в сумме это будет не больше 127 яблок, то можем смело использовать тип byte
- Если же мы знаем, что могут поменять условия задачи и у Димы может быть, например, 10 000 яблок, а у Ани, например, 7 000 яблок, то уже тип byte мы использовать не можем. Поскольку это явно выходит за пределы допустимых значений в byte – не более 127. Значит, могли бы использовать тип short, у которого максимально допустимое значение 32767
- Если же предположить, что у Димы и у Ани может быть даже больше, чем 32767 яблок. Ну, например, у них яблоневые сады по всей Украине. Тогда необходимо использовать тип int. Кстати, int – это сокращенно от английского integer (целое число).
- Ну, а если предположить, что Дима и Аня – это «яблочные магнаты» и им принадлежат все яблоневые сады в мире, то тогда число может быть намного больше, чем даже максимальное значение int 2147483647. И тогда необходимо использовать тип long.
Однако чаще всего при написании программ на Java, Вы будете использовать тип int. Это самый распространенный целочисленный тип. Более того, тип int в Java является типом «по умолчанию» для целочисленных типов. Что это значит, Вы узнаете на практике.
Прежде, чем использовать переменную, её необходимо объявить . А объявляются переменные так.

А вот и примеры объявления переменных:
И здесь сразу же хочется сказать о том, что переменные, когда их название состоит из 2 и более слов, пишутся слитно и как бы «горбиками» как у верблюда. Такой стиль написания слов называется CamelStyle (от англ. camel — «верблюд»).

Видите, названия примеров переменных состоят из 2 и более слов и пишутся слитно. Причем первое слово пишется с маленькой буквы, а во всех последующих словах первая буква большая. Теперь Вы знаете — это CamelStyle, стиль написания названий. Он иногда называется CamelCase. Мы об этом даже статью написали
Ну что ж, самое время понять за что отвечают переменные с плавающей точкой.
С плавающей точкой: float, double
И снова обратимся к примеру школьной задачи.
Задача 2: 
У Димы 3,5 яблока, у Ани 2,5 яблока. Сколько яблок у Димы и Ани вместе?
Как видите, в задаче речь идёт уже не о целых яблоках. Уже речь идёт о дробных числах. А значит мы уже не можем использовать целочисленный тип: нам не подойдет ни byte, ни short, ни int, ни long. Запомните: как только речь идет о дробных числах, значит, речь идет о float и ли double. Примеры дробных чисел: 1.0, 1.8, 3.141562, 9.0, 12.579, 1278.0, -5.0, — 9.4, -107.0, -107.356 и т.д.

Как видно из таблички:
- float может принимать значения от -3.4Е +38 до 3.4Е +38 и при этом занимает 4 байта памяти
- double принимает значения от -1.7E + 308 до 1.7Е + 308 и занимает 8 байт памяти
Запомните:
- дробные числа пишутся не через запятую, как мы привыкли со школы, а через точку. Например, 1,5 — это неправильно. Правильно 1.5
- float определяет значение одинарной точности. Это значит, что переменные данного типа удобны, когда требуется дробная часть без особой точности. Например, для денежных сумм.
- double обеспечивает двойную точность и это видно из названия (double — двойная).
Прежде, чем использовать переменную, её необходимо объявить . А объявляются переменные float и double по такому же принципу.

А вот и примеры объявления переменных:
float money; // объявили переменную money типа float
float wage; // объявили переменную wage типа float
float c; // объявили переменную c типа float
double stat; //объявили переменную stat типа double
Символы: char

В Java для char используется кодировка Unicode. Как видно из таблички, диапазон допустимых значений char от 0 до 65536 и при этом занимает 2 байта памяти. Отрицательных значений не существует. На самом деле переменная типа char хранит не сам символ, а его числовой код из таблички Unicode, по этому мы можем проводить целочисленные операции над символами.
Прежде, чем использовать переменную, её необходимо объявить . А объявляются переменные char по такому же принципу, что и ранее.

Примеры объявления переменных:
char y; //объявили переменную y типа char
char f; //объявили переменную f типа char
Логические: boolean

Логические или их еще называют булевы значения могут принимать только одно из двух возможных значений: true или false.
Только у славян возможен такой разговор:
— Да нет, наверное.
Это то, что очень удивляет иностранцев, когда они учат, например, украинский или русский язык. Так все-таки да или все-таки нет?
Так вот в языке программирования Java всё очень точно:
- либо true (с английского — «истина»)
- либо false (с английского — «ложь)

Чуть позже Вы поймете где применяется данный тип переменных, когда мы, например, дойдём до темы конструкции ветвления. А пока просто запомните, что есть такой тип. Пусть это будет пока «черной лошадкой» для Вас.
Прежде, чем использовать переменную, её необходимо объявить . А объявляются переменные boolean по такому же принципу, что и ранее.

Примеры объявления переменных:
boolean check1; //объявили переменную check1 типа boolean
boolean check2; //объявили переменную check2 типа boolean
Ну вот, теперь Вы знаете за что отвечают эти типы переменных:

Что ещё Вы должны знать?
1. Вы должны знать, что эти типы переменных относятся к так называемым примитивным типам переменных. Поэтому если услышите «примитивные типы данных» , «примитивы» или «primitives», знайте, речь идёт о 8 типах переменных — byte, short, int, long, float, double, char, boolean.
2. Есть еще один тип переменных — тип String . О нём мы поговорим в статье «Как присвоить значение переменной»
3. В Java очень важно правильно оформлять код . Да-да, не только писать работающие программы, но ещё и правильно оформленные. Существует целый свод правил, который называется Code Conventions в Java. Так что можете смело скачивать и постепенно изучать. А сейчас мы рассмотрим только часть Code Conventions, а именно правила написания названий переменных. Итак, запоминаем.
5 правил выбора названий для переменных:
Правило №1 — переменные пишутся только латинскими буквами. Никакой кириллицы.
Например:
Правило №2 – имя переменной, по возможности, должно быть «говорящим»
Например:
int s; // так можно называть переменную, но когда кода много и все переменные имеют не говорящие названия, код очень тяжело читать
int size; // этот вариант более «говорящий», чем первый вариант int s; поскольку понятно из названия, что переменная отвечает за размер чего-то
Правило №3 — с чего может/не может начинаться имя переменной
Может начинаться с :
- Любых латинских букв
- $ или _
Не может начинаться с:
Ниже приводим несколько примеров — правильных и неправильных.
Правильно:
- int square;
- int $money;
- int width;
- int boxSize;
- double sum;
- double sumJune;
Неправильно:
- int 2square;
- int 101dalmatians;
Правило №4 – название переменной, состоящее из 2 и более слов, пишется в CamelStyle
Что такое CamelStyle мы с Вами уже обсудили в этой статьей чуть выше.
Правило №5 – нельзя использовать в названиях переменных эти 54 слова:
abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum, extends, false, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, strictfp, String, super, switch, synchronized, this, throw, throws, transient, true, try, void, volatile, while
Эти 54 слова имеют особое значение при написании кода на Java . Постепенно Вы поймёте где используется каждое слово. Причём после прочтения этой статьи, из 54 слов Вам уже станут знакомы те слова, которые мы выделили синим:
abstract, assert, boolean , break, byte , case, catch, char , class, const, continue, default, do, double , else, enum, extends, false , final, finally, float , for, goto, if, implements, import, instanceof, int , interface, long , native, new, null, package, private, protected, public, return, short , static, strictfp, String , super, switch, synchronized, this, throw, throws, transient, true , try, void, volatile, while
ПОДЫТОЖИМ:
Всего 4 группы переменных:
- Целочисленные (к ним относятся byte, short, int, long)
- С плавающей точкой (к ним относятся float, double)
- Символы (char)
- Логические (boolean)

Эти 8 типов переменных (byte, short, int, long, float, double, char, boolean) относятся к там называемым примитивным типам переменных.
Прежде чем использовать переменную, её необходимо объявить:

5 правил выбора названий переменных:
- Переменные пишутся только латинскими буквами. Никакой кириллицы.
- Имя переменной, по возможности, должно быть «говорящим»
- Если переменная состоит из 2 и более слов, пишется в CamelStyle (другое название — CamelCase)
- Есть 54 слова, которые нельзя использовать в названиях переменных
- Имя переменной:
- может начинаться с любых латинских букв, $ или _
- не может начинаться с цифр
Также есть еще один тип переменных — тип String, о котором мы поговорим в статье «Как присвоить значение переменной в Java»
Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Обучаем с нуля.
По всем вопросам звоните:
+38 050 205 77 99
+38 098 205 77 99
Или читайте информацию по нашим курсам Java c нуля у нас на сайте.
- ← Что такое CamelCase или CamelStyle?
- Как создать первую веб-страницу →
Объявляем переменные,
вычисляем выражения
Операторы +=, -=, *=,/=, ++, —
Каждая программа что-нибудь вычисляет. Это может быть все что угодно — координаты персонажа в игре, сумма расходов, количество букв в тексте и т.д. Для всех вычислений используются переменные и числовые выражения.
Пусть вам нужно что-то рассчитать. Например, вы хотите примерно оценить сумму своих расходов за год по разным категориям — на продукты, одежду и транспорт. Причем вы знаете, что одежду вы покупаете в год 5 раз, продукты два раза в неделю, а транспортом пользуетесь каждый день, и знаете среднюю стоимость разовой покупки.
Это можно закодить так:
// Объявим по одной переменной для каждого вида расходов // Слева от равно пишем double - значит у нас будет дробное число // transp - имя переменной, мы его выбрали сами // Справа от равно - начальное значение double transp = 100; // на транспорт за один день тратим порядка 100 рублей double food = 500; // на еду за один заход в магазин в среднем 500 рублей double dress = 2000; // на одежду - 2000 //Начальное значение переменной result вычислим по выражению: double result = transp*365 + food*2*4*12 + dress*5; // То есть 365 раз за год потратились на транспорт, // еду покупали 2 раза в неделю, а недель 4 в месяце, а месяцев 12, // одежду купили 5 раз в год. // Теперь переменная result хранит сумму затрат за год - можно ее распечатать, // сравнить с другими переменными или использовать в дальнейших расчетах. // Удобно, что теперь мы можем менять значения исходных данных, // и смотреть, как это отразится на итоговом результате.
Определение. Переменная – это имя, которое обозначает некоторое число. Переменные могут получать начальное значение и потом менять его. У переменных есть тип – либо это целые числа ( int ), либо дробные ( double и float), либо символы ( char ). Переменные участвуют в любых выражениях наравне с обычными числами.
Объявить переменную — значит дать ей имя, указать, какого она типа, и указать начальное значение справа от знака равно. В коде это делается так:
int x = 10;
Это значит завести переменную с именем x , у которой тип – int , сокращенно от integer (по-английски «целое число»). Справа от знака равно ставится начальное значение переменной. Оно может быть просто равно заданному числу, например, 10, а может вычисляться через любое выражение.
В общем случае объявление переменной выглядит так:
тип имя = числовое выражение ;
Типы данных бывают такие – целое число int , дробное число double , символ char . Переменная — это имя, обозначающее заданное число. Вы можете это число по ходу программы менять. Как только вы объявили переменную, под неё выделяется место в оперативной памяти компьютера — ячейка. В ней записаны цифры данного числа в двоичной системе исчисления, где вместо привычных цифр 0, 1, 2, …, 9 есть только цифры 0 и 1.
Давайте поменяем значение переменной x вот так:
int x = 10; x = 200; //изменить значение икс - забыть 10, и запомнить 200 //слева int не указан, значит мы используем уже объявленную переменную
Разберем популярную ошибку — объявление одной и той же переменной дважды:
int x = 100; int x = 300; // ошибка - указав int, мы говорим "объявить новую x", но переменная x уже объявлена // Создадим другую переменную с именем y int y = 100; // Объявим ее еще раз с другим типом double y = 200.5; // ошибка - переменная y уже была раньше объявлена. // Теперь, когда мы указали новый тип, компилятор просто не может определиться, // что же имелось в виду, y - целое, или y - дробное. Вы можете получить ошибку // ambiguous name, то есть многозначное имя.
Посмотрим новый пример с несколькими переменными. Кстати я пишу, что делает очередная строчка в комментарии к ней. Комментарии не исполняются в программе, в них можно просто пояснять код. Комментарии на одну строчку в Java обозначаются // , а также внутри блока /* Можно писать всё что угодно */ — это комментарий на много строчек. Вы легко опознаете комментарии, когда увидите их в этом коде:
package javaapplication1; public class JavaApplication1 < public static void main(String[] args) < //вызовем функцию println System.out.println ("Щас будем вычислять!"); // Объявим переменную x целого типа, равную 10 int x = 10; // Объявим переменную y целого типа, равную 30 int y = 30; // Объявим переменную z, равную выражению: int z = x + y /2; // Распечатаем значение z – это будет 25 System.out.println (z); // Изменим z снова, пусть оно будет теперь x/2 z = x / 2; // Выведем на экран новое значение z – это будет 5 System.out.println (z); // Можно объявить несколько переменных в одной строчке int a = 10, b = 20; /* В принципе можно объявить переменную без начального значения, но Java ударит вас по рукам, если вы позже не присвоите ей значение. Лучше так не делать, потому что от переменных без начального значения пользы никакой, а навредить они могут сильно – если вдруг Java не заметит, что вы её используете, то вы получите непредсказуемое поведение программы, каждый раз разное – эту ошибку очень сложно отловить, иногда на её поиск уходят недели. */ int w; // Лучше не надо, поверьте.. w = 5; // Объявим переменную дробного типа double double some = 0.5; // Изменим значение переменной some на новое some = 1.5; // Сделаем some равной y some = y; // Объявим символ с равным коду буквы b char c = ‘b’; /* Здесь можно писать только одну букву или цифру в одинарных кавычках. Символы нельзя складывать, зато из них можно делать строки и тексты – мы займемся этим на следующих уроках*/ // Объявим дробное d, равное 2.5 double d = 2.5; /* Используем саму переменную, чтобы например, увеличить ее на 5: */ d = d + 5; // теперь d равно 7.5, старое значение забыто >/* В конце переменные, объявленные в main, удаляются - так происходит всегда по достижении конца блока фигурных скобок, внутри которого они были объявлены */ > /* По сути переменная – это число, записанное в ячейке памяти компьютера. Объявить переменную – значит назвать эту ячейку именем. Имя может быть одной буквой, а может быть и словом. Вы можете поменять число, сидящее в ячейке, или использовать его для вычисления других чисел. Это очень удобно, иначе вам пришлось бы указывать «вон то число», а потом «вот это число», чтобы сделать любые вычисления. Так писали программы в 80ых годах прошлого века – это было настолько неудобно, что элементарный калькулятор приходилось писать месяцами. Теперь, заводя переменные, мы пишем его за несколько минут. */
Привычные нам знаки арифметических действий +, — , * , / называются операторами, они служат для простых вычислений. Знак = тоже оператор и означает приравнять , то есть изменить старое значение переменной на новое. Но есть еще операторы +=, -= , *= , /= . Они читаются увеличить (уменьшить, умножить, поделить) переменную на значение справа. Рассмотрим пример ниже:
int x = 10; // Увеличим x на 10 x = x + 10; // Ту же фразу можно записать короче с оператором += x += 10;
То есть оператор += является просто сокращением и означает увеличить переменную на значение, стоящее справа. Аналогично, операторы -=, *=, /= вычитают, умножают, делят переменную на значение, стоящее справа, например:
double y = 12; double z = 3; // Поделим y на 3 и запишем новое значение в y y /= z; // Умножим на 4, затем на (z-2) y *= 4; y *= z-2; /* Все это допустимые операции, их удобно делать с операторами +=, -=, *=, /= */
Ещё операцию x += 1 тоже можно записать короче с помощью оператора инкремента ++ . То есть ++ означает «увеличить переменную на один». Аналогично — значит «уменьшить на 1». Посмотрим в коде:
int x = 10; x ++; // теперь x равен 11 x ++; // теперь x равен 12 x --; // теперь x снова 11
Можно писать x++ (постфиксный инкремент), а можно ++x (префиксный инкремент). Аналогично и с декрементом. Если эти операции стоят в коде отдельно от прочих, то оба варианта записи эквивалентны, они увеличивают x на 1. Если же x++ используется прямо в выражении, то разница есть . Поясним в коде:
int a = 10; // зададим a и b равным 10 int b = 10; // a++ означает в выражении использовать старое значение a, но в потом a увеличить int y = 5 + a++; // итого будет 5+10 // ++b означает уже в выражении увеличить b int z = 5 + ++b; // итого будет 5 + 11 System.out.println (a); System.out.println (b); System.out.println (y); System.out.println (z); /* Вывод программы: 11 11 15 16 */
Ещё поясняющий пример:
// вариант с использованием x ++ // постфиксная запись, как бы "увеличить x после" выражения int x = 10; int y = 5 + x++; // будет эквивалентно следующему: int x = 10; int y = 5 + x; // в выражении старое значение x += 1; // уже после выражения мы увеличим x // а теперь то же самое с использование x-- // префиксная запись, как бы "увеличить перед" выражением int x = 10; int y = 5 + ++x; // будет эквивалентно следующему: int x = 10; x += 1; // перед выражением мы увеличим x int y = 5 + x; // в выражении новое увеличенное значение // Начинающим обучение можно лишний раз не думать об разнице x++, ++x // Просто не пишите их прямо в выражения, и считайте, что это просто "увеличить на 1" // Но если где-то встретите, то будете готовы :)
Более сложные выражения с участием скобок (. )
Скобки позволяют указать программе, что нужно в выражении вычислить раньше, а что потом. Выражения в скобках имеют абсолютный приоритет — сначала вычисляется то что в скобках, потом умножение и деление, потом уже сложение и вычитание. Разберёмся в приоритетах на примере:
double x = 10 + 5 * 2 - 3; // будет конечно 10+10-3, то есть 17 double y = (10 + 5) * 2 - 3; // теперь есть скобки , поэтому 15*2 - 3, то есть 27 double z = 100 / 4 * 2 + 5; // при равнозначном приоритете компилятор читает слева направо: // получится 100/4 - это 25, умножить на 2 - это 50, и добавить 5 - в итоге z=55 // Очень советую поэкспериментировать в коде с такими выражениями. // Усложняйте их постепенно, используйте старые значения переменной в новом выражении. // Несколько полезных примеров: z = z*z; // получается, возвести z в квадрат, // поскольку мы взяли старое значение, умножили его само на себя и записали в z. // Аналогично можно возвести в куб и вообще в любую степень: x = x*x*x ; // возвели x в куб. // Также можно получить обратную к исходной величину: x = 1 / x; // но помните, что если бы x был int, а не double, // то тут часто получался бы чистый ноль, // т.к. при делении целых дробные части отбрасываются. // Теперь пример на несколько скобок x = 10; x = (x + 10) / 2 - 5 * (x-2); // будет 20 / 2 - 5 * 8, то есть -30. // А также вложенные скобки: x = 10; x = (x + 5*(x-1) ) * 2 + 1; // будет (10 + 5 * 9) * 2 + 1 = 55 * 2 + 1 = 111.
Самое главное мы уже освоили. Теперь время решать задачи. Ответьте на несколько вопросов, чтобы лучше усвоился новый материал:
