LightBlog

Java Fundamentals - Types of Operators


Operators
System.out.print(9 / 3); // Outputs 3
System.out.print(9 % 3); // Outputs 0

System.out.print(10 / 3); // Outputs 3
System.out.print(10 % 3); // Outputs 1

System.out.print(11 / 3); // Outputs 3
System.out.print(11 % 3); // Outputs 2

System.out.print(12 / 3); // Outputs 4
System.out.print(12 % 3); // Outputs 0


Numeric Promotion Rules
1. If two values have different data types, Java will automatically promote one of the values to the larger of the two data types.

2. If one of the values is integral and the other is floating-point, Java will automatically promote the integral value to the floating-point value’s data type.

3. Smaller data types, namely byte, short, and char, are first promoted to int any time they’re used with a Java binary arithmetic operator, even if neither of the operands is int.

4. After all promotion has occurred and the operands have the same data type, the resulting value will have the same data type as its promoted operands.


What is the data type of x / y?
short x = 10;
short y = 3;
In this case, we must apply the third rule, namely that x and y will both be promoted to int before the operation, resulting in an output of type int.

What is the data type of x * y / z?
short x = 14;
float y = 13;
double z = 30;
we evaluate the multiple and division from left-to-right.In this case, we must apply all of the rules. First, x will automatically be promoted to int solely because it is a short and it is being used in an arithmetic binary operation. The promoted x value will then be automatically promoted to a float so that it can be multiplied with y. The result of x * y will then be automatically.


1.Increment/ Decrement

  • For the final variables we can’t apply increment or decrement operators
        final int i=10;
        i++; 
 (or)          
i=20;
Test.java:8: error: cannot assign a value to final variable i
                 i++;
                 ^


  • We can apply increment or decrement operators even for floating point data types also.
double d = 10.5;
d++;
System.out.println(d);// 11.5


How this following expression is evaluated?
int x = 3;
int y = ++x * 5 / x-- + --x;
System.out.println("x is " + x);
System.out.println("y is " + y);

int y = 4 * 5 / x-- + --x; // x assigned value of 4
int y = 4 * 5 / 4 + --x; // x assigned value of 3
int y = 4 * 5 / 4 + 2; // x assigned value of 2
we evaluate the multiple and division from left-to-right, and finish with the addition.The result is then printed: x is 2 & y is 7


Does it work?
long t = 192301398193810323; // DOES NOT COMPILE
It does not compile because Java interprets the literal as an int and notices that the value is larger than int allows. The literal would need a postfi x L to be considered a long


short x = 10;
short y = 3;
short z = x * y; // DOES NOT COMPILE

short x = 10;
short y = 3;
short z = (short)(x * y);

long x = 10;
int y = 5;
y = y * x; // DOES NOT COMPILE
Based on the last two sections, you should be able to spot the problem in the last line.This last line could be fi xed with an explicit cast to (int), but there’s a better way using the compound assignment operator:


long x = 10;
int y = 5;
y *= x;
The compound operator will first cast x to a long, apply the multiplication of two long values, and then cast the result to an int.


long x = 5;
long y = (x=3);
System.out.println(x); // Outputs 3
System.out.println(y); // Also, outputs 3


Infinity and -Infinity

  • In Integer Arthematic (byte,int,short), if any thing divide 0 will get R.E: A.E: Divide by 0.
  • But In Floating point arthematic, if any thing didvide by 0.0, we will get Infinity/ -Infinity
                System.out.println(10 / 0.0); // Infinity       
                System.out.println(-10 / 0.0);// -Infinity


NaN – Not a Number

  • In Integer Arthematic (byte,int,short), 0 divide 0 will get R.E: A.E: Divide by 0.
  • But In Floating point arthematic, 0 divide by 0.0, we will get Nan (no -Nan is there)
                System.out.println(0.0 / 0.0); // NaN   
                System.out.println(-0.0 / 0.0);// NaN



Equality Operators (==)

The comparisons for equality are limited to these three cases, so you cannot mix and match types. For example, each of the following would result in a compiler error:
boolean x = true == 3; // DOES NOT COMPILE
boolean y = false != "Giraffe"; // DOES NOT COMPILE
boolean z = 3 == "Kangaroo"; // DOES NOT COMPILE


Conditional Statements

int x = 1;
if(x) { // DOES NOT COMPILE
...
}

int x = 1;
if(x = 5) { // DOES NOT COMPILE
...
}

System.out.println((y > 5) ? 21 : "Zebra");
int animal = (y < 91) ? 9 : "Horse"; // DOES NOT COMPILE
^ (X-OR) - Homogeneous are FALSE(T,T F,F), Heterogeneous are TRUE(T,F  F,T)

Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.

0 comments:

Post a Comment