Присвоение значений
[вставка не в тему]
Как вы уже должны были знать, в java a=2; вовсе не означает, что a = 2. Это значит, что а ТЕПЕРЬ = 2.
Поэтому запись а = а + 1; вполне правильна:
Новое значение переменной а теперь равно старое значение переменной а + 1
Типы переменных. Совершенствование калькулятора.
Как вы уже поняли, в java есть несколько типов переменных. Сейчас давайте познакомимся со всеми базовыми:
Цельночисленные:
[Мою красивую табличку порезали блоги :(]
Название Минимальное… максимальное значение
long -9, 223, 372, 036, 854, 775, 808… 9, 223, 372, 036, 854, 775, 807
int -2, 147, 483, 648… 2, 147, 483, 647
short -32, 768… 32, 767
byte/char* -128… 127
* Этот тип содержит в себе символ, закодированный через ASKII код(0-127 – основная часть(английская+цифры+спец. символы); -128 – -1 – дополнительная(региональная))
Дробные:
Название Минимальное… максимальное значение
double 1. 7е-308… 1. 7е+ 308
float 3. 4е-038… 3. 4е+ 038
Почему еще существуют цельночисленные типы? Ведь они гораздо “меньше”, чем double/float!
Тут все дело в точности… На пример число 123 в дробном типе хранятся как 1.23е2, а в цельно численном – 123. Количество цифр после точки ограничено, поэтому числа длиннее 10~15 знаков будут округляться (с этим связан феномен Farlands в Minecraft).
Все оценки — приблизительные, типы иногда меняются (точные значения можно найти у oracle), но из всего этого нам надо знать только int, long и double. Ну, может еще и char.
Еще есть один базовый тип — boolean. Он может хранить в себе всего 2 значения true/false(правда/ложь;1/0; вкл./выкл.) Но он нам потребуется только в 3 туториале.
На данный момент наш калькулятор считает только в целых числах, если попробовать ввести дробное число (через точку), то eclipse окатит вас помоями ошибками. Поэтому стоит заменить тип переменных с int на double (так-же поменяйте scanner.nextInt на scanner.nextDouble для ввода дробей).
Математика в java
В java есть все стандартные мат действия, записываются они как + — * /, есть специальное действие — остаток от деления, записывается как %.
Поэкспериментируйте с этим.
Специальная математика
Во всех примерах начальное значение a = 5 — то, что будет в консоли
Операция ++ — увеличение на единицу(эквивалент а = а + 1;):
a++;
System.out.print(a); — 6
___
++a;
System.out.print(a); — 6
___
НО!
System.out.print(a); — 5
System.out.print(a++); — 5
System.out.print(a); — 6
___
НО!
System.out.print(a); — 5
System.out.print(++a); — 6
System.out.print(a); — 6
Если словами, то ++а сначала увеличивает, потом выполнят оставшиеся действия, а а++ сначала выполняет действия, а потом увеличивает.
Аналогично есть а-- и --а.
Операция а += x; эквивалентна а = а + x;
Аналогично есть -= *= /= %=
Продвинутая математика
В любом месте пишем math. и выбираем! Синусы, косинусы, округления, градусы и прочие интегралы у нас в руках!
Краткая справка по меню авто завершения:
Math.max(double a, double b): double
В скобках через запятую — типы аргуменов(то, что в функцию посылаем). Через: тип выходного значения функции(то, что приходит из функции после завершения ее работы в место вызова)
Покажу один пример на базе кода калькулятора:
- import java.util.Scanner;
- public class Tutorial {
- double num_1, num_2;
- num_1 = scanner.nextDouble();
- num_2 = scanner.nextDouble();
- }
- }
Например: num_1 = 4.0; num_2 = 4.1 => функция max(4.0, 4.1) превращается в 4.1 => System.out.print(«Максимальное число:\n» + 4.1);
Лучшие комментарии
args — аргументы с которыми запускается программа. Например в винде есть стандартная утилита — ping.exe, а чтобы пропинговать адрес надо послать его как аргумент (ping.exe blogs.stopgame.ru)
подобным образом запустить нашу прогу, то строка blogs.stopgame.ru будет в args
остальное потом, это сложнее
Люди, если вы прочитаете и поймете это, то обещаю в туториале 3 показывать все только на примерах!
Впереди самое интересное: циклы, условия, строки, интерфейс, и прога для одного сайта… (хоть и не на заказ)
И кстати, если даже вы не заинтересованы в разработке плагинов под сервер minecraft, почитайте мои будущие туторы: кайф программирования именно в программировании ради цели! (моя цель меня довела до 317 строк кода/10005 символов/9,77 КБ за 5 дней, continue testing.......)
И каждую мельчайшую проблему обсуждаем в комментах! Тут не должно быть непонимания!