java에는 조건문과 반복문이 존재한다. 문법은 c언어와 거의 동일하다.
만일(if) 조건식이 참(true)라면 괄호{} 안의 문장들을 수행하라는 의미.
if(조건식){
//조건식이 참일때 수행할 문장
}
if 문에 사용되는 조건식은 일반적으로 비교연산자와 논리연산자로 구성된다.
비교연산자: >,>=,<=,<,==
논리연산자: ||(or), &&(and)
즉, 조건식의 결과가 반드시 true or false여야함!
말 그대로다.
if를 선언한 상태에서 if문 안의 조건식 외에 다른 조건을 걸고 싶을 때 쓴다.
탕수육을 먹을 때...
찍먹파라면? (if)
부먹파라면? (else if)
찍먹파도 부먹파도 아니라면? (else)
이처럼 else는 나머지 조건을 통틀어서 제시할 때 사용한다.
또한, else와 else if 모두 if문이 제시된 이후에 사용이 가능하다.
if문은 조건식의 결과값이 참, 거짓 두가지 밖에 없기 때문에 경우의 수가 많아질수록 else-if를 계속 추가해야하는 불편함이 있다.
이를 switch로 해결할 수 있는데, switch는 case와 break 함께 사용한다.
- 조건식을 계산한다
- 조건식의 결과와 일치하는 case문으로 이동한다.
- 이후의 문장들을 수행한다.
- break문이나 switch문의 끝을 만나면 switch문을 탈출한다.
앞서 부먹 찍먹 예시를 switch로 바꿔보자.
switch(탕수육 먹을 때){
case 찍먹파 :
system.out.println("당신은 찍먹파군요!");
break; // switch문 탈출
case 부먹파 :
System.out.println("당신은 부먹파군요!");
break;
default :
System.out.println("설마 소스 안드세요?");
//이미 switch문의 마지막이므로, break는 필요없다
switch문은 if문과 달리 조건식의 결과가 정수 또는 문자열이여야 한다.
다른 말로는 if,switch모두 조건식 안에 실수,변수를 넣을 수 없다!
만약 break를 쓰지 않는다면?
switch문을 탈출하지 않고 다시 그 아래의 case로 간다.
어떠한 문구를 10번 연속 출력해야한다고 치자.
system.out을 10번 연속 써도 되지만, 코드가 길어진다.
또한, 특정 조건을 걸고 싶을 때 코드 짜기가 난감해진다.
(예: 10번 중 짝수번째 출력 시 다른 문구를 출력하고 싶을 때)
for문은 반복 횟수를 알고 있을 때 적합하다.
for(초기화; 조건식; 증감식)으로 선언하며, 조건식이 참일 경우에만 괄호 안 명령을 실행한다.
for(int i=1;i<=5;i++){
반복할 명령
}
배열, 컬렉션 등에 저장된 요소를 읽어올 때 사용한다.
파이썬으로 따지면 for을 사용할 때 range대신 in을 사용하는 것과 비슷하다.
#python
arr=[1,2,3]
for i in arr:
print([%d],i)
위가 파이썬 코드라면
//java
int [] arr={1,2,3};
for(i:arr)
{ System.out.println(tmp);}
자바에서는 이처럼 사용한다.
while문은 특정 횟수보다는 특정 조건(예 : 어떠한 변수가 어떠한 값을 충족할 때 까지 반복)이 붙었을 때 사용하기 좋다.
int cnt=0;
while (cnt<10)
{ 반복할 명령
cnt+=1; // 종료 조건을 꼭 넣어줘야한다!
}
이처럼 while문은 반복문을 돌아도 언젠간 종료될 수 있도록 해줘야한다.
do while은 반복문을 일단 조건 관계 없이 한 번은 실행해야 하는 경우 사용한다.
do{
최소 1회 이상 수행되고, while 속 조건문이 참일때까지 반복할 명령
}
while(조건식)
그렇다면 조건식을 만족하지 않아도 반복문을 탈출하고 싶을 때는 어떡할까?
break를 사용할 시, 반복문 속 조건문과 관계없이 반복문을 탈출한다. 이 때, 자신이 속한 모든 반복문을 벗어나는 것이 아니라 가장 가까운 반복문을 벗어난다.
(예: 이중 for문을 사용했으나, 두번째 for문에서 break가 걸렸을 시, 첫번째 for문까지 탈출하는 것이 아닌, 두 번째 for문만 탈출한다)
int cnt=1;
while(cnt>0)
{
System.out.println("몇 번 실행될까요?");
break;
}
//해당 반복문은 1회만 실행된다.
반복문을 돌던 중, continue를 만난다면 그 당시 반복문만 무시한다.
int cnt=1;
while(cnt>0)
{
if (cnt==5)
continue; //i가 5일 때에는 아래 반복문을 실행하지 않는다.
System.out.println(cnt);
cnt++;
}
//해당 반복문은 1회만 실행된다.
함수처럼 반복문에 따로 이름을 지어줄 수도 있다.
int cnt=0;
OneToTen: while(cnt<=10)
{
cnt++;
System.out.println(cnt);
if (cnt==5)
break OneToTen;
}
/*
출력결과
1
2
3
4
*/