Java provides a rich set of
operators to manipulate variables. We can divide all the Java operators into
the following groups:
- Arithmetic Operators
- Relational Operators
- Bitwise Operators
- Logical Operators
- Assignment Operators
The Arithmetic Operators:
Arithmetic operators are used in
mathematical expressions in the same way that they are used in algebra. The
following table lists the arithmetic operators:
Assume integer variable A holds 10
and variable B holds 20 then:
Operator
|
Description
|
Example
|
+
|
Addition - Adds values on either
side of the operator
|
A + B will give 30
|
-
|
Subtraction - Subtracts right hand
operand from left hand operand
|
A - B will give -10
|
*
|
Multiplication - Multiplies values
on either side of the operator
|
A * B will give 200
|
/
|
Division - Divides left hand
operand by right hand operand
|
B / A will give 2
|
%
|
Modulus - Divides left hand
operand by right hand operand and returns remainder
|
B % A will give 0
|
++
|
Increment - Increase the value of
operand by 1
|
B++ gives 21
|
--
|
Decrement - Decrease the value of
operand by 1
|
B-- gives 19
|
class Test {
public static void main(String args[]) {
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println("a + b = " + (a + b) );
System.out.println("a - b = " + (a - b) );
System.out.println("a * b = " + (a * b) );
System.out.println("b / a = " + (b / a) );
System.out.println("b % a = " + (b % a) );
System.out.println("c % a = " + (c % a) );
System.out.println("a++ = " + (a++) );
System.out.println("b-- = " + (a--) );
// Check the difference in d++ and ++d
System.out.println("d++ = " + (d++) );
System.out.println("++d = " + (++d) );
}
}
The Relational Operators:
There are following relational
operators supported by Java language
Assume variable A holds 10 and
variable B holds 20 then:
Operator
|
Description
|
Example
|
==
|
Checks if the value of two
operands are equal or not, if yes then condition becomes true.
|
(A == B) is not true.
|
!=
|
Checks if the value of two
operands are equal or not, if values are not equal then condition becomes
true.
|
(A != B) is true.
|
>
|
Checks if the value of left
operand is greater than the value of right operand, if yes then condition
becomes true.
|
(A > B) is not true.
|
<
|
Checks if the value of left
operand is less than the value of right operand, if yes then condition
becomes true.
|
(A < B) is true.
|
>=
|
Checks if the value of left
operand is greater than or equal to the value of right operand, if yes then
condition becomes true.
|
(A >= B) is not true.
|
<=
|
Checks if the value of left
operand is less than or equal to the value of right operand, if yes then
condition becomes true.
|
(A <= B) is true.
|
The following simple example program
demonstrates the relational operators. Copy and paste following Java program in
Test.java file and compile and run this program. :
class Test {
public static void main(String args[]) {
int a = 10;
int b = 20;
System.out.println("a == b = " + (a == b) );
System.out.println("a != b = " + (a != b) );
System.out.println("a > b = " + (a > b) );
System.out.println("a < b = " + (a < b) );
System.out.println("b >= a = " + (b >= a) );
System.out.println("b
<= a = " + (b <= a) );
}
}
|
The Bitwise Operators:
Java defines several bitwise
operators which can be applied to the integer types, long, int, short, char,
and byte.
Bitwise operator works on bits and
perform bit by bit operation. Assume if a = 60; and b = 13; Now in binary
format they will be as follows:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
The following table lists the
bitwise operators:
Assume integer variable A holds 60
and variable B holds 13 then:
Operator
|
Description
|
Example
|
&
|
Binary AND Operator copies a bit
to the result if it exists in both operands.
|
(A & B) will give 12 which is
0000 1100
|
|
|
Binary OR Operator copies a bit if
it exists in eather operand.
|
(A | B) will give 61 which is 0011
1101
|
^
|
Binary XOR Operator copies the bit
if it is set in one operand but not both.
|
(A ^ B) will give 49 which is 0011
0001
|
~
|
Binary Ones Complement Operator is
unary and has the efect of 'flipping' bits.
|
(~A ) will give -60 which is 1100
0011
|
<<
|
Binary Left Shift Operator. The
left operands value is moved left by the number of bits specified by the
right operand.
|
A << 2 will give 240 which
is 1111 0000
|
>>
|
Binary Right Shift Operator. The
left operands value is moved right by the number of bits specified by the
right operand.
|
A >> 2 will give 15 which is
1111
|
>>>
|
Shift right zero fill operator.
The left operands value is moved right by the number of bits specified by the
right operand and shifted values are filled up with zeros.
|
A >>>2 will give 15 which
is 0000 1111
|
The Logical Operators:
The following table lists the
logical operators:
Assume boolean variables A holds
true and variable B holds false then:
Operator
|
Description
|
Example
|
&&
|
Called Logical AND operator. If
both the operands are non zero then then condition becomes true.
|
(A && B) is false.
|
||
|
Called Logical OR Operator. If any
of the two operands are non zero then then condition becomes true.
|
(A || B) is true.
|
!
|
Called Logical NOT Operator. Use
to reverses the logical state of its operand. If a condition is true then
Logical NOT operator will make false.
|
!(A && B) is true.
|
The Assignment Operators:
There are following assignment
operators supported by Java language:
Operator
|
Description
|
Example
|
=
|
Simple assignment operator,
Assigns values from right side operands to left side operand
|
C = A + B will assigne value of A
+ B into C
|
+=
|
Add AND assignment operator, It adds
right operand to the left operand and assign the result to left operand
|
C += A is equivalent to C = C + A
|
-=
|
Subtract AND assignment operator,
It subtracts right operand from the left operand and assign the result to
left operand
|
C -= A is equivalent to C = C - A
|
*=
|
Multiply AND assignment operator,
It multiplies right operand with the left operand and assign the result to
left operand
|
C *= A is equivalent to C = C * A
|
/=
|
Divide AND assignment operator, It
divides left operand with the right operand and assign the result to left
operand
|
C /= A is equivalent to C = C / A
|
%=
|
Modulus AND assignment operator,
It takes modulus using two operands and assign the result to left operand
|
C %= A is equivalent to C = C % A
|
<<=
|
Left shift AND assignment operator
|
C <<= 2 is same as C = C
<< 2
|
>>=
|
Right shift AND assignment
operator
|
C >>= 2 is same as C = C
>> 2
|
&=
|
Bitwise AND assignment operator
|
C &= 2 is same as C = C &
2
|
^=
|
bitwise exclusive OR and
assignment operator
|
C ^= 2 is same as C = C ^ 2
|
|=
|
bitwise inclusive OR and
assignment operator
|
C |= 2 is same as C = C | 2
|
Misc Operators
There are few other operators
supported by Java Language.
Conditional
Operator ( ? : ):
Conditional operator is also known
as the ternary operator. This operator consists of three operands and is used
to evaluate boolean expressions. The goal of the operator is to decide which
value should be assigned to the variable. The operator is written as :
variable x = (expression) ? value if true : value if false
|
Following is the example:
public class Test {
public static
void main(String args[]){
int a , b;
a = 10;
b = (a == 1) ?
20: 30;
System.out.println( "Value of b is : " + b );
b = (a == 10) ? 20: 30;
System.out.println( "Value of b is : " + b );
}
}
|
This would produce following result:
Value of b is : 30
Value of b is : 20
|
|
true
|
Precedence of Java Operators:
Operator precedence determines the
grouping of terms in an expression. This affects how an expression is
evaluated. Certain operators have higher precedence than others; for example,
the multiplication operator has higher precedence than the addition operator:
For example x = 7 + 3 * 2; Here x is
assigned 13, not 20 because operator * has higher precedenace than + so it
first get multiplied with 3*2 and then adds into 7.
Here operators with the highest
precedence appear at the top of the table, those with the lowest appear at the
bottom. Within an expression, higher precedenace operators will be evaluated
first.
Category
|
Operator
|
Associativity
|
Postfix
|
() [] . (dot operator)
|
Left to right
|
Unary
|
++ - - ! ~
|
Right to left
|
Multiplicative
|
* / %
|
Left to right
|
Additive
|
+ -
|
Left to right
|
Shift
|
>> >>> <<
|
Left to right
|
Relational
|
> >= < <=
|
Left to right
|
Equality
|
== !=
|
Left to right
|
Bitwise AND
|
&
|
Left to right
|
Bitwise XOR
|
^
|
Left to right
|
Bitwise OR
|
|
|
Left to right
|
Logical AND
|
&&
|
Left to right
|
Logical OR
|
||
|
Left to right
|
Conditional
|
?:
|
Right to left
|
Assignment
|
= += -= *= /= %= >>=
<<= &= ^= |=
|
Right to left
|
Comma
|
,
|
Left to right
|
Array is a data structure capable to
hold data of similar data types. Every language comes with its own rules for
arrays. For example, JavaScript and VBScript comes its own set of rules, quiet
different from Java. Arrays of Java are similar to C/C++.
Properties
of Arrays
Following
are the properties of arrays as accepted by the Java compiler.
- Arrays stores similar data
types. That is, array can hold data of same data type values. This is one
of the limitations of arrays compared to other data structures.
- Each value stored, in an array,
is known as an element and all elements are indexed. The first
element added, by default, gets 0 index. That is, the 5th element added
gets an index number of 4.
- Elements can be retrieved by
their index number.
- Array elements are stored in contiguous
(continuous) memory locations.
- Once array is created, its size
is fixed. That is, at runtime if required, more elements cannot be
added. This is another limitation of arrays compared to other data
structures.
- One array name can represent
multiple values. Array is the easiest way to store a large quantity of
data of same data types. For example, to store the salary
of 100 employees, it is required to declare 100 variables. But with
arrays, with one array name all the 100 employees salaries can be stored.
- Arrays can be multidimensional.
- At the time of creation itself,
array size should be declared (array initialization does not require
size).
- In Java, arrays are predefined
objects. With methods, the array elements can be manipulated.
Java supports two types of castings
– primitive data type casting.
Java data
type casting comes with 3 flavors.
- Implicit casting
- Explicit casting
1. Implicit
casting (widening conversion)
A data type
of lower size (occupying less memory) is assigned to a data type of higher size. This is done implicitly by the
JVM. The lower size is widened to higher size. This is also named as automatic
type conversion.
Examples:
int x = 10; //
occupies 4 bytes
double y =
x; //
occupies 8 bytes
System.out.println(y); //
prints 10.0
In the above
code 4 bytes integer value is assigned to 8 bytes double value.
2. Explicit
casting (narrowing conversion)
A data type
of higher size (occupying more memory) cannot be assigned to a data type of
lower size. This is not done implicitly by the JVM and requires explicit
casting; a casting operation to be performed by the programmer. The higher
size is narrowed to lower size.
double x = 10.5; //
8 bytes
int y = x;
// 4 bytes ; raises compilation error
In the above
code, 8 bytes double value is narrowed to 4 bytes int value. It raises error.
Let us explicitly type cast it.
double x = 10.5;
int y = (int) x;
The double
x is explicitly converted to int y. The thumb rule is, on both
sides, the same data type should exist.
3. Boolean casting
3. Boolean casting
A boolean
value cannot be assigned to any other data type. Except boolean, all the
remaining 7 data types can be assigned to one another either implicitly or
explicitly; but boolean cannot. We say, boolean is incompatible for
conversion. Maximum we can assign a boolean value to another boolean.
Following
raises error.
boolean x =
true;
int y = x; //
error
boolean x =
true;
int y = (int) x; //
error
byte –>
short –> int –> long –> float –> double
In the above
statement, left to right can be assigned implicitly and right to left requires
explicit casting. That is, byte can be assigned to short implicitly
but short to byte requires explicit casting.
No comments:
Post a Comment