Monday 6 March 2017

Arithmetic Operators - Java Tutorials

Arithmetic operators are used in mathematical expressions in the same way that they are used in algebra. The following table lists the arithmetic operators:


Operator             Result

+                           Addition

–                           Subtraction (also unary minus)

*                           Multiplication

/                            Division

%                          Modulus

++                        Increment

+=                        Addition assignment

–=                        Subtraction assignment

*=                        Multiplication assignment

/=                         Division assignment

%=                       Modulus assignment

– –                       Decrement


The operands of the arithmetic operators must be of a numeric type. You cannot use them on boolean types, but you can use them on char types, since the char type in Java is, essentially, a subset of int.

The Basic Arithmetic Operators

The basic arithmetic operations—addition, subtraction, multiplication, and division—all behave as you would expect for all numeric types. The minus operator also has a unary form which negates its single operand. Remember that when the division operator is applied to an integer type, there will be no fractional component attached to the result.

The following simple example program demonstrates the arithmetic operators. It also illustrates the difference between floating-point division and integer division.

  // Demonstrate the basic arithmetic operators.
  class BasicMath {
    public static void main(String args[]) {
      // arithmetic using integers
      System.out.println("Integer Arithmetic");
      int a = 1 + 1;
      int b = a * 3;
      int c = b / 4;
      int d = c - a;
      int e = -d;
      System.out.println("a = " + a);
      System.out.println("b = " + b);
      System.out.println("c = " + c);
      System.out.println("d = " + d);
      System.out.println("e = " + e);

      // arithmetic using doubles
      System.out.println("\nFloating Point Arithmetic");
      double da = 1 + 1;
      double db = da * 3;
      double dc = db / 4;
      double dd = dc - a;
      double de = -dd;
      System.out.println("da = " + da);
      System.out.println("db = " + db);
      System.out.println("dc = " + dc);
      System.out.println("dd = " + dd);
      System.out.println("de = " + de);
    }
  }

When you run this program, you will see the following output:

  Integer Arithmetic
  a = 2
  b = 6
  c = 1
  d = -1
  e = 1

  Floating Point Arithmetic
  da = 2.0
  db = 6.0
  dc = 1.5
  dd = -0.5
  de = 0.5


The Modulus Operator

The modulus operator, %, returns the remainder of a division operation. It can be applied to floating-point types as well as integer types. (This differs from C/C++, in which the % can only be applied to integer types.) The following example program demonstrates the %:

  // Demonstrate the % operator.
  class Modulus {
    public static void main(String args[]) {
      int x = 42;
      double y = 42.25;

      System.out.println("x mod 10 = " + x % 10);
      System.out.println("y mod 10 = " + y % 10);
    }
  }

When you run this program you will get the following output:

  x mod 10 = 2
  y mod 10 = 2.25


Arithmetic Assignment Operators

Java provides special operators that can be used to combine an arithmetic operation with an assignment. As you probably know, statements like the following are quite common in programming:

  a = a + 4;

In Java, you can rewrite this statement as shown here:

  a += 4;

This version uses the += assignment operator. Both statements perform the same action: they increase the value of a by 4.

Here is another example,

  a = a % 2;

which can be expressed as

  a %= 2;

In this case, the %= obtains the remainder of a/2 and puts that result back into a.
There are assignment operators for all of the arithmetic, binary operators. Thus, any statement of the form

  var = var op expression;

can be rewritten as

  var op= expression;

The assignment operators provide two benefits. First, they save you a bit of typing, because they are “shorthand” for their equivalent long forms. Second, they are implemented more efficiently by the Java run-time system than are their equivalent long forms. For these reasons, you will often see the assignment operators used in professionally written Java programs.

Here is a sample program that shows several op= operator assignments in action:

  // Demonstrate several assignment operators.
  class OpEquals {
    public static void main(String args[]) {
      int a = 1;
      int b = 2;
      int c = 3;

      a += 5;
      b *= 4;
      c += a * b;
      c %= 6;
      System.out.println("a = " + a);
      System.out.println("b = " + b);
      System.out.println("c = " + c);
    }
  }

The output of this program is shown here:

  a = 6
  b = 8
  c = 3


Increment and Decrement

The ++ and the – – are Java’s increment and decrement operators. They were introduced in Chapter 2. Here they will be discussed in detail. As you will see, they have some special properties that make them quite interesting. Let’s begin by reviewing precisely what the increment and decrement operators do.

The increment operator increases its operand by one. The decrement operator decreases its operand by one. For example, this statement:

  x = x + 1;

can be rewritten like this by use of the increment operator:

  x++;

Similarly, this statement:

  x = x - 1;

is equivalent to

  x--;

These operators are unique in that they can appear both in postfix form, where they follow the operand as just shown, and prefix form, where they precede the operand. In the foregoing examples, there is no difference between the prefix and postfix forms. However, when the increment and/or decrement operators are part of a larger expression, then a subtle, yet powerful, difference between these two forms appears. In the prefix form, the operand is incremented or decremented before the value is obtained for use in the expression. In postfix form, the previous value is obtained for use in the expression, and then the operand is modified. For example:

  x = 42;
  y = ++x;

In this case, y is set to 43 as you would expect, because the increment occurs before x is assigned to y. Thus, the line y = ++x; is the equivalent of these two statements:

  x = x + 1;
  y = x;

However, when written like this,

  x = 42;
  y = x++;

the value of x is obtained before the increment operator is executed, so the value of y is 42. Of course, in both cases x is set to 43. Here, the line y = x++; is the equivalent of these two statements:

  y = x;
  x = x + 1;

The following program demonstrates the increment operator.

  // Demonstrate ++.
  class IncDec {
    public static void main(String args[]) {
      int a = 1;
      int b = 2;
      int c;
      int d;
      c = ++b;
      d = a++;
      c++;
      System.out.println("a = " + a);
      System.out.println("b = " + b);
      System.out.println("c = " + c);
      System.out.println("d = " + d);
    }
  }

The output of this program follows:

  a = 2
  b = 3
  c = 4
  d = 1

No comments:

Post a Comment