Операції. Арифметичні операції

Операції. Арифметичні операції




1. Які групи операцій підтримуються мовою Java?

Мова програмування Java підтримує великий набір операцій. Операції використовуються у виразах.

Усі операції поділяються на 5 груп:

  • арифметичні операції (+, , *, / та інші);
  • порозрядні логічні операції (~, &, | та інші);
  • логічні операції (&, |, &&, || та інші);
  • операції відношення (==, !=, >, < та інші);
  • додаткові операції для особливих випадків.

2. Які особливості використання арифметичних операцій?

Арифметичні операції використовуються в математичних виразах. Арифметичні операції є близькими до операцій алгебри.

Арифметичні операції повинні мати числовий тип. Детальний опис типів даних наведено тут.

Арифметичні операції можна виконувати також над типом char.

Забороняється виконувати арифметичні операції над логічними типами даних (boolean).

У мові Java є такі арифметичні операції:

Операція       Опис
------------------------------------------------
   +           Додавання (а також унарний плюс)
   -           Віднімання (а також унарний мінус)
   *           Множення
   /           Ділення
   %           Остача від ділення
   ++          Інкремент (приріст на 1)
   --          Декремент (від’ємний приріст на 1)
   +=          Додавання з присвоюванням
   -=          Віднімання з присвоюванням
   *=          Множення з присвоюванням
   /=          Ділення з присвоюванням
   %=          Ділення по модулю з присвоюванням

3. Приклад використання арифметичних операцій +, , *, /
// арифметичні операції '+', '-', '*', '/'
// цілочисельні типи
int a,b;
long l;

a = 8;
b = -5;
l = a + b; // l = 3
l = a - b; // l = 13
l = a * b; // l = -40
l = a / b; // l = -1 - ділення націло

// дійсні типи
float f1, f2;
double d;

f1 = 3.5f;
f2 = 10.0f;
d = f1 + f2; // d = 13.5
d = f1 - f2; // d = -6.5
d = f1 * f2; // d = 35.0
d = f1 / f2; // d = 0.3499999940395355

// цілочисельні та дійсні типи
a = 5;
f1 = 3.2f;
d = a * f1; // d = 16.0
d = a + f1; // d = 8.199999809265137
d = a - f1; // d = 1.7999999523162842
d = a / f1; // d = 1.5625

// тип char
char c = 'A';
c = (char)(c + 1); // c = 'B'
int code;
code = (int)(c + 1); // code = 67

4. Приклад застосування операції % остачі від ділення

Операція % повертає остачу від ділення. Цю операцію можна застосовувати:

  • до цілочисельних типів даних (byte, short, int, long);
  • до типів даних з плаваючою комою (float, double).

Так, наприклад, якщо поділити 8 на 5, то остача буде рівна 3.

// % - остача від ділення
// цілочисельні типи
byte b;
b = 8 % 5; // b = 3
b = 8 % 4; // b = 0

int a;
a = 15;
b = (byte)(8 % a); // b = 8

// дійсні типи
float f1, f2;
double d;
f1 = 3.5f;
f2 = 10.0f;
d = f1 % f2; // d = 3.5

f2 = 0.5f;
d = f1 % f2; // d = 0.0

f2 = 1.2f;
d = f1 % f2; // d = 1.1

// цілочисельні та дійсні типи
int x = 5;
float ff = 3.5f;
double dd;
dd = x % ff; // dd = 1.5

5. Приклад застосування операцій інкременту ++ та декременту – –

Операція інкременту ‘++‘ збільшує значення операнду на 1.

Операція декременту ‘‘ зменшує значення операнду на 1.

// інкремент '++', декремент '--'
// цілочисельні типи
long x = 9;
x++; // x = 10

x = -15;
x--; // x = -16

// дійсні типи
float f;
f = 2.3f;
f++; // f = 3.3

f = -3.85f;
f--; // f = -4.85

Операцію інкременту

a++;

можна замінити

a = a + 1;

Так само операцію декременту

a--;

можна замінити

a = a - 1;

6. Яка відмінність між префіксною та постфіксною формою застосування операцій інкременту (++) та декременту (– –)

Відмінність між префіксною та постфіксною формами застосування проявляється, коли операції інкременту чи декременту є частиною більш складного виразу.

У префіксній формі (++a або –a) послідовність виконання операцій наступна:

  • збільшується (зменшується) значення операнду a на 1;
  • результуюче значення операнду a використовується у виразі.

У постфіксній формі (a++ або a–) послідовність виконання операцій наступна:

  • попереднє значення операнду a використовується у виразі;
  • збільшується (зменшується) значення операнду a на 1.

Приклад.

// інкремент '++', декремент '--'
// цілочисельні типи
int a, b;
a = -6;
b = a++; // b = -6; a = -5

a = -6;
b = ++a; // b = -5; a = -5

a = 3;
b = a--; // b = 3; a = 2

a = 3;
b = --a; // b = 2; a = 2

// дійсні типи
float f;
double d;
f = 5.7f;
d = ++f; // d = 6.7; f = 6.7

У даному прикладі рядок

b = ++a;

означає, що:

  • спочатку збільшується значення операнда a;
  • потім результуюче значення присвоюється змінній b.

Рядок

b = a++;

означає, що:

  • спочатку значення a присвоюється змінній b;
  • потім значення a збільшується на 1.

7. Приклади застосування складених арифметичних операцій з присвоюванням +=, -=, *=, /=, %=

Складені арифметичні операції з присвоюванням мають 2 переваги:

  • зменшують об’єм введеного коду, коли зустрічаються довгі імена змінних;
  • реалізація складених арифметичних операцій у виконавчому середовищі Java є більш ефективною ніж реалізація відповідних довгих операцій присвоювання.

Загальний вигляд складеної операції з присвоюванням:

змінна операція = вираз;

Така операція замінює стандартну форму присвоювання:

змінна = змінна операція вираз;

Приклад. Використання складених операторів у програмі.

// цілочисельні типи
int a;

a = 7;
a += 8; // a = a + 8 = 15

a = -3;
a -=5;  // a = a - 5 = -3 - 5 = -8

a = 10;
a *= 3; // a = 30

a = 20;
a /= 5; // a = 4

a = 30;
a %= 7; // a = 30 % 7 = 2

// дійсні типи
float f;

f = 3.5f;
f += 2*f; // f = f + 2*3.5 = 10.5

f = -8.0f;
f -= f;  // f = f - f = 0.0

f = 6.5f;
f %= 2; // f = 0.5


Зв’язані теми