== operator is a type of Relational Operator in Java used to check for relations of equality. It returns a boolean result after the comparison and is extensively used in looping statements and conditional if-else statements.
Syntax:
LHS value == RHS value
But, while comparing these values, three cases arise generally:
This is the most simple among the cases. As primitive data is stored in the stack memory, in this case, the actual value of both sides is fetched from the stack memory and compared. It returns true if they both are equal, else false is returned.
Syntax:
Actual value == Actual value
Example:
Are 4 and 4 equal? true Are 4 and 5 equal? false
In this scenario, for the primitive side, the actual value is taken for comparison from the stack memory. But for the reference side, when an array is declared and initialized, the data is stored in the heap memory and the reference pointer in the stack memory. So all that is in the stack memory is the memory address.
Syntax:
Actual value == Address value OR Address value == Actual value
So when the comparison between a primitive value and a reference value is taken, the program doesn’t compile and throws an error:
Compilation Error in java code:-
prog.java:20: error: incomparable types: int and int[] + (a == b)); ^ 1 error
This is because the value for the primitive side is easily fetched from the stack memory, but for the reference side, the value cannot be fetched as the value is in heap memory. Hence the error.
Example: