연산자, switch, if, 반복문

연산자

연산자는 변수에 값을 대입하거나 변수와 변수의 값을 비교하거나 변수의 값을 변경하기 위해 사용되는 기호를 말한다.

산술 연산자

연산자 반환값
+ 5 + 2 7
- 5 - 2 3
* 5 * 2 10
/ 5 / 2 2
% 5 % 2 1
++ ++5 + 2 8
(++은 값을 1증가한 후 반환한다.)
5++ + 2 7
(++은 값을 증가하기 전에 반환한다.)
-- --5 + 2 6
(--은 값을 1감소한 후 반환한다.)
5-- + 2 7
(--은 값을 감소하기 전에 반환한다.)

관계 연산자

연산자 반환값
> 5 > 2 true
>= 5 >= 2 true
< 5 < 2 false
<= 5 <= 2 false
== 5 == 2 false
!= 5 != 2 true

조건 연산자

연산자 반환값
&& 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

대입 연산자

연산자 설명
= a = 9; a에 9를 할당
+= 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;

피연산자가 문자열일때 + 연산자

피연산자가 문자열일때 + 연산자는 문자열을 합치는 기능을 수행한다.
반환값
1988 + ": Hi"; "1988: Hi"

if문, switch문, 반복문

if문

int year = 2001;
if (year >= 2001 && year <= 2100) {
  System.out.println("21세기");
}
21세기
int age = 65;
if (age < 6 && age >= 65) {
  System.out.println("무료");
} else {
  System.out.println("유료");
}
무료
int age = 65;
if (age >= 65) {
  System.out.println("무료");
} else if (age < 6) {
  System.out.println("무료");
} else {
  System.out.println("유료");
}
무료

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;
자신을 감싸고 있는 반복문을 빠져나온다.
continue;
자신을 감싸고 있는 반복문의 조건식으로 분기한다.
return;
메소드를 종료하고 프로그램의 흐름을 메소드를 호출한 곳으로 되돌린다.
return; 문은 void 메소드에서만 사용할 수 있다.
for (int i = 0; i < 10; i++)
자바에서는 for 문의 초기식에 변수를 선언할 수 있다.
초기식에서 선언된 변수는 for문의 {} 안에서만 유효하다.
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
		
		/*
		++ 또는 --가 피연산자가 앞에 붙을때와 뒤에 붙을 때 
		연산자 우선순의는 극과 극으로 차이가 난다. 
		*/
		 
		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와 같다.
		System.out.println("e = " + e); //e = 6
		++e;
		System.out.println("e = " + e); //e = 7
	}
}
예제에 다음 부분을 추가하고 테스트한다.
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
예제에 다음 코드를 추가하고 테스트한다.
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
Exception in thread "main" java.lang.NullPointerException
	at Test.main(Test.java:46)
& msg.length() > 0는 예외를 발생시킨다.
&는 &&와 달리 먼저 검사한 부울 식이 false라도 이어지는 부울 식을 검사한다.
아래와 같이 주석처리한다.
//msg = yr >= 2001 & yr <= 2100 & msg.length() > 0 ? yr+" is 21C" : yr +" is not 21C";
//System.out.println(msg);
예제에 다음을 추가하고 테스트한다.
class User {
	boolean signIn = true;
	String id = "Batman";
	String authority = "ADMIN";
}

User user = new User();

//로그인한 유저의 아이디가 Superman 이거나 권한이 ADMIN인지 검사
if ((user.signIn && user.id.equals("Superman")) || (user.signIn && user.authority.equals("ADMIN"))) {
	System.out.println("첫번째 테스트: Superman OR ADMIN");
}

user.authority = "USER";
if ((user.signIn && user.id.equals("Superman")) || (user.signIn && user.authority.equals("ADMIN"))) {
	System.out.println("두번째 테스트: Superman OR ADMIN");
}
첫번째 테스트: Superman OR ADMIN
참고