# Operators, if, switch, loops

## Operators

An Operators is a symbol that the compiler to perform manipulations such as assign a value to a variable or change a value of a variable or compare two values.

### Arithmetic Operators

Operator Example Return value
+ 5 + 2 7
- 5 - 2 3
* 5 * 2 10
/ 5 / 2 2
% 5 % 2 1
++ ++5 + 2 8
(++ returns the value after incrementing.)
5++ + 2 7
(++ returns the value before incrementing.)
-- --5 + 2 6
(-- returns the value after decrementing.)
5-- + 2 7
(-- returns the value before decrementing.)

### Equality and Relational Operators

Operator Example Return value
> 5 > 2 true
>= 5 >= 2 true
< 5 < 2 false
<= 5 <= 2 false
== 5 == 2 false
!= 5 != 2 true

### Conditional Operators

Operator Example Return value
&& int year = 2016;
year >= 1901 && year <= 2000;
false
|| int age = 6;
age < 6 || age >= 65;
false
? int a = 5;
int b = 2;
return a > b ? a : b;
5

### Assignment Operators

Operator Example Description
= a = 9; Assign 9 to a
+= a += b; a = a + b;
-= a -= b; a = a - b;
*= a *= b; a = a * b;
/= a /= b; a = a / b;
%= a %= b; a = a % b;

### + operator when operand is a string

when operand is a string, + operator performs string concatenation.

Example Return value
1988 + ": Hi"; "1988: Hi"

## if, switch, loops

### if

```int year = 2001;
if (year >= 2001 && year <= 2100) {
System.out.println("21st century");
}
```
```21st century
```
```int age = 65;
if (age < 6 && age >= 65) {
System.out.println("Free");
} else {
System.out.println("Not Free");
}
```
```Free
```
```int age = 65;
if (age >= 65) {
System.out.println("Free");
} else if (age < 6) {
System.out.println("Free");
} else {
System.out.println("NOT Free");
}
```
```Free
```

### switch

```int channel = 7;
swicth (channel) {
case 5:
System.out.println("SBS");
break;
case 7: case 9:
System.out.println("KBS");
break;
case 11:
System.out.println("MBC");
break;
default:
System.out.println("Cabel TV");
}
```
```KBS
```

### for

```int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
System.out.println(sum);
```
```55
```

### while

```int sum = 0;
int i = 1;
while (i <= 10) {
sum += i;
i++;
}
System.out.println(sum);
```
```55
```

### do ~ while

```int sum = 0;
int i = 1;
do {
sum += i;
i++;
} while (i <= 10);
System.out.println(sum);
```
```55
```
break;
Breaks out of the inner loop
continue;
Skips rest of loop's body and makes program flow goto the boolean expression that controls the loop.
return;
Terminates the method and makes program flow goto the line which call the method. A return; is only available at void method.
for (int i = 0; i < 10; i++) { }
In Java, you can declare the variable in the initial expression as the above.
Variable i is valid in {} of for statement.
###### OperatorsTest.java
```public class OperatorsTest {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;

System.out.println("a = " + a); //a = 1
System.out.println("b = " + b); //b = 2
System.out.println("c = " + c); //c = 3
System.out.println("d = " + d); //d = 4
System.out.println("e = " + e); //e = 5

System.out.println("a + b = " + (a + b)); //a + b = 3
System.out.println("b - c = " + (b - c)); //b - c = -1
System.out.println("c * d = " + (c * d)); //c * d = 12
System.out.println("e / b = " + (e / b)); //e / b = 2
System.out.println("e % b = " + (e % b)); //e % b = 1

/*
++e and e++ are extremely differ in the operator precedence.
*/

System.out.println("e++ = " + e++); //e++ = 5
System.out.println("++e = " + ++e); //++e = 7

System.out.println("e-- = " + e--); //e-- = 7
System.out.println("--e = " + --e); //--e = 5

e++; //e++ equals ++e when it show alone.
System.out.println("e = " + e); //e = 6
++e;
System.out.println("e = " + e); //e = 7
}
}
```

Add the below to the source.

```System.out.println("a > b " + (a > b));
System.out.println("b >= a " + (b >= a));
System.out.println("c < d " + (c < d));
System.out.println("d <= a " + (d <= a));
System.out.println("a == b " + (a == b));
System.out.println("a != b " + (a != b));
```
```a > b false
b >= a true
c < d true
d <= a false
a == b false
a != b true
```

Add the below to the source.

```int yr = 2000;
String msg = null;

msg = yr >= 2001 && yr <= 2100 && msg.length() > 0 ? yr+" is 21C" : yr +" is not 21C";
System.out.println(msg);

msg = null;
msg = yr >= 2001 & yr <= 2100 & msg.length() > 0 ? yr+" is 21C" : yr +" is not 21C";
System.out.println(msg);
```
```2000 is not 21C
at Test.main(Test.java:46)
```

& msg.length() > 0 occurs an exception.
Unlike &&, & checks a following boolean expression, even if the previous boolean expression is false.

```//msg = yr >= 2001 & yr <= 2100 & msg.length() > 0 ? yr+" is 21C" : yr +" is not 21C";
//System.out.println(msg);
```

Add the below to the source.

```class User {
boolean signIn = true;
String id = "Batman";
}

User user = new User();

//Check whether login user's id is the "Superman" or authority is an "ADMIN".
if ((user.signIn && user.id.equals("Superman")) || (user.signIn && user.authority.equals("ADMIN"))) {
```1st TEST: Superman OR ADMIN