연산자
연산자 파트는 어느 프로그래밍 언어를 봐도 비슷하기 때문에 특별하게 신경 쓸 부분이 없어서 간단하게 표로 정리만 하고 넘어가겠다.
종류 | 연산자 | 설명 |
산술 연산자 | + - * / % << >> | 사칙 연산(+,-,*,/)과 나머지 연산(%), 비트 연산(<<, >>) |
비교 연산자 | > < >= <= == != | 크고 작음과 같고 다름을 비교 |
논리 연산자 | && || ! & | ^ ~ | AND와 OR로 조건을 연결 |
대입 연산자 | = | 우변의 값을 좌변에 저장 |
기타 | (type) ?: instanceof | 형변환 연산자, 삼항 연산자, instanceof 연산자 |
instanceof 연산자가 좀 생소한 부분인데 나중에 객체지향에 대해 공부하면 알 수 있는 내용이라 굳이 지금 안 쓸 거다.
조건문
자바의 조건문으로는 if문과 switch문이 있다.
if - else 문
if(조건식1) {
조건식이 true일 때 수행될 문장
}
else if(조건식2) {
조건식이 true일 때 수행될 문장
}
else {
위의 어느 조건식도 만족하지 않을 때 수행될 문장
}
if문의 형식은 C++과 다르지 않아서 사용에 유의할 점은 없는 거 같다.
Switch 문
if문보다 처리시간이 짧은 것이 장점이다.
if문은 처리해야 할 조건이 많아질수록 조건식도 많아져서 계산에 시간이 걸리지만, switch문의 경우 하나의 조건식으로 계산한 뒤 그 결과값에 따라 일치하는 case문으로 이동하기 때문에 수행시간에 장점이 있다.
하지만 복잡한 조건식을 처리하지 못 한다. 계산기 같은 거 만들 때 쓰면 편하다.
switch (조건식) {
case 값1 :
조건식의 결과가 값1일 때 수행할 문장
break;
case 값2 :
조건식의 결과가 값2일 때 수행할 문장
break;
default :
조건식의 결과가 일치하는 case가 없을 때 수행할 문장
}
case문 옆에 ;(세미콜론)이 아니라 :(콜론)을 적어줘야 한다. 1학년 때 이거 때문에 오류 한 번 났어서 항상 유의하고 있다.
그리고 break문 항상 써줘야 한다. 이건 요즘도 생각 없이 코드 짜다보면 까먹는다...
반복문
자바의 반복문에는 for문 while문 do-while문이 있다.
for문
for(초기화 ; 조건식 ; 증감식) {
조건식이 참일 때 수행할 문장
}
문법이 C++ 이상 다를게 없다. for문은 파이썬을 제외하고는 다 비슷한 거 같다.
while문
while(조건식) {
조건식이 참일 때 수행할 문장
}
나는 while문을 무한반복이 필요할 때 while(1) 이렇게 쓸 때를 제외하고는 거의 쓰지 않는 거 같다.
근데 같은 조건으로 수행시간은 for문보다 while문이 더 빠르다고 시스템 프로그래밍 수업에서 배웠다.
그래도 손이 안 간다.
do-while문
do {
수행할 문장
} while(조건식);
do-while 문을 처음 배울 때 교수님이 웬만하면 쓰지 말라고 하셨던 게 기억난다.
그래서 나도 진짜 가끔 알고리즘 문제 풀 때나 가끔 쓰지 써본 적이 없다.
break문
반복문을 수행하다가 break문을 만나면 자신이 포함된 가장 가까운 반복문을 벗어난다.
무한루프 반복문을 사용할 때 반드시 포함해야 하는 문장이다.
int score = 80;
int i = 0;
while(true) { //무한 반복
if(score > 90) { //만약 score이 80 이상이면
break; //조건문 탈출
}
++i;
score += i; //score = score + i
}
System.out.println("i = " + i); //i = 5
Sysetm.out.println("score = " + score); //score = 95
break문을 쓸 수 있는 간단한 예시다.
i | score |
i = 0 | score = 80 (초기 상태) |
i = 1 | score = 81 |
i = 2 | score = 83 |
i = 3 | score = 86 |
i = 4 | score = 90 |
i = 5 | score = 95 (탈출) |
i가 증가함에 따라 score도 함께 증가하다 score > 90 이라는 조건을 만족하게 되면 반복문을 탈출한다.
continue문
반복문 안에서 continue문을 만나면 반복문의 끝으로 이동한다.
반복문 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 쓰인다.
for(int i = 1; i < 10; i++) { //i가 (1~9)까지 반복
if( i % 2 != 0) { //만약 i가 2로 나누어 떨어지자 않으면. 즉, 홀수이면
continue; //반복문의 끝으로 이동
}
System.out.println(i + "-> 짝수");
} // <-continue 문이 돌이오는 곳
/*
출력
2-> 짝수
4-> 짝수
6-> 짝수
8-> 짝수
*/
굳이 짝수를 이렇게 구하진 않겠지만??
만약 continue문을 써서 구한다면 저렇게 된다.
이름 붙은 반복문
Loop1 : for(int i = 2; i <= 9; i++) { //2~9단까지 구구단 출력
for (int j = 1; j <= 9; j++) {
if (i % 2 == 0) { //짝수 단은 제외하고 출력
break;
}
if (j == 7) { // j가 7이면
break Loop1; //구구단 종료
}
System.out.println(i + " * " + j + " = " + i * j);
}
//<- break문이 탈출하는 곳
}
// <- break Loop1이 탈출하는 곳
/*
출력
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
*/
자바에서는 반복문에 이름을 붙일 수 있다.
C++은 다중 반복문 빠져나가려면 반복문 개수 만큼 break문을 써줘야 했기 때문에, 이런 기능이 있으면 다중 반복문 사용 시 편할 거 같다.
총평
반복문과 조건문의 문법은 C++과 다르지 않아서 어렵지 않았다.
이름 붙은 반복문이 굉장히 인상깊다. 요긴하게 써먹을 수 있을 거 같다.
'✏️Java 공부 > Java의 정석' 카테고리의 다른 글
[Java 공부/Java의 정석] Chapter.06 : 객체지향 프로그래밍 1 - 3 (기본형 매개변수와 참조형 매개변수) (0) | 2022.07.01 |
---|---|
[Java 공부/Java의 정석] Chapter.06 : 객체지향 프로그래밍 1 - 2 (변수와 메서드) (0) | 2022.07.01 |
[Java 공부/Java의 정석] Chapter.06 : 객체지향 프로그래밍 1 - 1 (객체지향언어, 클래스와 객체) (0) | 2022.06.30 |
[Java 공부/ Java의 정석] Chapter 05. 배열 (0) | 2022.01.23 |
[Java 공부/ Java의 정석] Chapter 01. 자바를 시작하기 전에 & Chapter 02 : 변수 (0) | 2022.01.22 |
댓글