Operators constitute the basic building block of any programming language. Java too provides many types of operators which can be used according to the need to perform various calculations and functions, be it logical, arithmetic, relational, etc. They are classified based on the functionality they provide.
Types of Operators:
- Arithmetic Operators
- Unary Operators
- Assignment Operator
- Relational Operators
- Logical Operators
- Ternary Operator
- Bitwise Operators
- Shift Operators
This article explains all that one needs to know regarding Assignment Operators.
Assignment Operators
These operators are used to assign values to a variable. The left side operand of the assignment operator is a variable, and the right side operand of the assignment operator is a value. The value on the right side must be of the same data type of the operand on the left side. Otherwise, the compiler will raise an error. This means that the assignment operators have right to left associativity, i.e., the value given on the right-hand side of the operator is assigned to the variable on the left. Therefore, the right-hand side value must be declared before using it or should be a constant. The general format of the assignment operator is,
variable operator value;
Types of Assignment Operators in Java
The Assignment Operator is generally of two types. They are:
1. Simple Assignment Operator: The Simple Assignment Operator is used with the “=” sign where the left side consists of the operand and the right side consists of a value. The value of the right side must be of the same data type that has been defined on the left side.
2. Compound Assignment Operator: The Compound Operator is used where +,-,*, and / is used along with the = operator.
Let’s look at each of the assignment operators and how they operate:
1. (=) operator:
This is the most straightforward assignment operator, which is used to assign the value on the right to the variable on the left. This is the basic definition of an assignment operator and how it functions.
Syntax:
num1 = num2;
Example:
a = 10;
ch = 'y';
Java
// Java code to illustrate "=" operator import java.io.*; class Assignment { public static void main(String[] args) { // Declaring variables int num; String name; // Assigning values num = 10 ; name = "Lazyroar" ; // Displaying the assigned values System.out.println( "num is assigned: " + num); System.out.println( "name is assigned: " + name); } } |
num is assigned: 10 name is assigned: Lazyroar
2. (+=) operator:
This operator is a compound of ‘+’ and ‘=’ operators. It operates by adding the current value of the variable on the left to the value on the right and then assigning the result to the operand on the left.
Syntax:
num1 += num2;
Example:
a += 10
This means,
a = a + 10
Java
// Java code to illustrate "+=" import java.io.*; class Assignment { public static void main(String[] args) { // Declaring variables int num1 = 10 , num2 = 20 ; System.out.println( "num1 = " + num1); System.out.println( "num2 = " + num2); // Adding & Assigning values num1 += num2; // Displaying the assigned values System.out.println( "num1 = " + num1); } } |
num1 = 10 num2 = 20 num1 = 30
Note: The compound assignment operator in Java performs implicit type casting. Let’s consider a scenario where
x
is anint
variable with a value of 5.int x = 5;
If you want to add the double value 4.5 to the integer variable
x
and print its value, there are two methods to achieve this:Method 1: x = x + 4.5
Method 2: x += 4.5
As per the previous example, you might think both of them are equal. But in reality, Method 1 will throw a runtime error stating the “incompatible types: possible lossy conversion from double to int“, Method 2 will run without any error and prints 9 as output.
Reason for the Above Calculation
Method 1 will result in a runtime error stating “incompatible types: possible lossy conversion from double to int.” The reason is that the addition of an
int
and adouble
results in adouble
value. Assigning thisdouble
value back to theint
variablex
requires an explicit type casting because it may result in a loss of precision. Without the explicit cast, the compiler throws an error.Method 2 will run without any error and print the value 9 as output. The compound assignment operator
+=
performs an implicit type conversion, also known as an automatic narrowing primitive conversion fromdouble
toint
. It is equivalent tox = (int) (x + 4.5)
, where the result of the addition is explicitly cast to anint
. The fractional part of thedouble
value is truncated, and the resultingint
value is assigned back tox
.It is advisable to use Method 2 (
x += 4.5
) to avoid runtime errors and to obtain the desired output.
Same automatic narrowing primitive conversion is applicable for other compound assignment operators as well, including -=
, *=
, /=
, and %=
.
3. (-=) operator:
This operator is a compound of ‘-‘ and ‘=’ operators. It operates by subtracting the variable’s value on the right from the current value of the variable on the left and then assigning the result to the operand on the left.
Syntax:
num1 -= num2;
Example:
a -= 10
This means,
a = a - 10
Java
// Java code to illustrate "-=" import java.io.*; class Assignment { public static void main(String[] args) { // Declaring variables int num1 = 10 , num2 = 20 ; System.out.println( "num1 = " + num1); System.out.println( "num2 = " + num2); // Subtracting & Assigning values num1 -= num2; // Displaying the assigned values System.out.println( "num1 = " + num1); } } |
num1 = 10 num2 = 20 num1 = -10
4. (*=) operator:
This operator is a compound of ‘*’ and ‘=’ operators. It operates by multiplying the current value of the variable on the left to the value on the right and then assigning the result to the operand on the left.
Syntax:
num1 *= num2;
Example:
a *= 10
This means,
a = a * 10
Java
// Java code to illustrate "*=" import java.io.*; class Assignment { public static void main(String[] args) { // Declaring variables int num1 = 10 , num2 = 20 ; System.out.println( "num1 = " + num1); System.out.println( "num2 = " + num2); // Multiplying & Assigning values num1 *= num2; // Displaying the assigned values System.out.println( "num1 = " + num1); } } |
num1 = 10 num2 = 20 num1 = 200
5. (/=) operator:
This operator is a compound of ‘/’ and ‘=’ operators. It operates by dividing the current value of the variable on the left by the value on the right and then assigning the quotient to the operand on the left.
Syntax:
num1 /= num2;
Example:
a /= 10
This means,
a = a / 10
Java
// Java code to illustrate "/=" import java.io.*; class Assignment { public static void main(String[] args) { // Declaring variables int num1 = 20 , num2 = 10 ; System.out.println( "num1 = " + num1); System.out.println( "num2 = " + num2); // Dividing & Assigning values num1 /= num2; // Displaying the assigned values System.out.println( "num1 = " + num1); } } |
num1 = 20 num2 = 10 num1 = 2
6. (%=) operator:
This operator is a compound of ‘%’ and ‘=’ operators. It operates by dividing the current value of the variable on the left by the value on the right and then assigning the remainder to the operand on the left.
Syntax:
num1 %= num2;
Example:
a %= 3
This means,
a = a % 3
Java
// Java code to illustrate "%=" import java.io.*; class Assignment { public static void main(String[] args) { // Declaring variables int num1 = 5 , num2 = 3 ; System.out.println( "num1 = " + num1); System.out.println( "num2 = " + num2); // Moduling & Assigning values num1 %= num2; // Displaying the assigned values System.out.println( "num1 = " + num1); } } |
num1 = 5 num2 = 3 num1 = 2