#선택문
if-then & if-then-else
가장 기본적인 선택문이다. 오직 특정 if조건이 true일때만 해당 if 블럭이 실행된다.
void applyBrakes(){
//the "if" clause: bicycle must be moving
if(isMoving)
//the "then" clause: decrease current speed
currentSpeed--;
}
}
void applyBrakes(){
//the "if" clause: bicycle must be moving
if(isMoving)
//the "then" clause: decrease current speed
currentSpeed--;
} else{
System.err.println("The bicycle has already stopped!");
}
}
switch문
class SwitchDemo2 {
public static void main(String[] args) {
int month = 2;
int year = 2000;
int numDays = 0;
switch (month) {
case 1: case 3: case 5:
case 7: case 8: case 10:
case 12:
numDays = 31;
break;
case 4: case 6:
case 9: case 11:
numDays = 30;
break;
case 2:
if (((year % 4 == 0) &&
!(year % 100 == 0))
|| (year % 400 == 0))
numDays = 29;
else
numDays = 28;
break;
default:
System.out.println("Invalid month.");
break;
}
System.out.println("Number of Days = "
+ numDays);
}
}
자바에서는 switch문의 branch가 많아질 수록 아래와 같은 방법을 권장한다.
출처 : refactoring.guru/replace-conditional-with-polymorphism
#반복문
while & do-while
while문법은 특정 조건이 true인 경우 반복적으로 실행된다.
do-while도 특정 조건이 true인 경우 반복되지만 실행되는 문장이 do블럭에서 실행된다.
int count = 1;
//while문
while(count < 11){
System.out.println("Count is: " + count);
count++;
}
//do-while문
do {
System.out.println("Count is: " + count);
count++;
} while (count < 11);
for문
for문은 다양한 값에 대해 반복작업을 할 수 있는 문법이다.
for(initialization; termination; increment){
statements(s);
}
for(int i=1; i<11; i++){
System.out.println("Count is: " +i);
}
initialization : 루프가 돌때, 시작하며 한번 실행된다.
termination : 조건을 표시하며 false가 될때 terminate된다.
increment : 증분식은 루프를 통해 반복될 때마다 호출된다. 증가 or 감소시킨다.
for문의 Collections과 arrays에 사용할 수 있는 또다른 폼이 있다.
class EnhancedForDemo {
public static void main(String[] args){
int[] numbers = {1,2,3,4,5,6,7,8,9,10};
for(int item : numbers){
System.out.println("Count is: "+item);
}
}
}
반복문을 통해 변수 item의 현재값을 보여준다.
위의 form의 for문을 사용하는 것을 추천한다.
break : 조건문,반복문에서 특정 조건에서 진행을 break할 수 있는 문법
continue : 특정 케이스에서는 작업을 skipt한다.
return : 조건문,반복문에서 특정 조건에서 변수를 return할 수 있는 문법
#재귀함수 사용시 주의사항
자바는 recursion 사용시에 꼬리재귀 최적화가 안된다.
공간복잡도는 Stack까지 고려해야 한다.
시간 복잡도 O(N)
공간 복잡도 O(N)
괜찮은 알고리즘 기준은 O(N) logN, O(N)까지 괜찮다. 그러나 O(N^2)부터 고민해봐야 한다.
'Backend > Java' 카테고리의 다른 글
Enum 자바의 열거형 (0) | 2021.01.29 |
---|---|
[Java] 클래스 (0) | 2021.01.20 |
Java 예외 처리 정리 (0) | 2021.01.16 |
Junit5 문법 / 예제 / 활용 방법 (0) | 2021.01.16 |
연산자 (3주차) (0) | 2021.01.12 |