연산자, 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참고