{}
으로 구성됨{}
= 여러 개의 문장을 하나로 묶기 위해 사용되는 것
ex. 함수, 조건문, 반복문 등에 사용
//아래의 조건식은 true, false로 값이 결정되는 수식만 사용해야함
if(조건식) {}
if(조건식) 문장;
if(조건식) {}
else {}
if(조건식) 문장;
else 문장;
그러나 여기서 간단한 if-else문이라면 삼항연산자
를 고려해봐도 좋다.
public static void main(String[] args) {
int score = 45;
char grade = ' ';
grade = (score>=90) ? 'A' : ((score>=80) ? 'B' : 'C');
System.out.println("당신의 학점은 "+grade+"입니다.");
}
//당신의 학점은 C입니다 (ㅠㅠㅠ겁나 슬프군)
++ char은 기본값을 \u1000
으로 초기화 하지만 일반적으로 ' '
공백으로 초기화 한다. (''
이 표현은 X)
그러나 String은 참조형이기 때문에 null로 기본값을 선언해도 되지만 일반적으로 ""
이렇게 빈 문자열로 초기화한다.
조건의 경우의 수가 겁나 많을 때 switch문을 사용하는 것이 좋다!
(간결하고 알아보기 쉬움)
=> if문의 조건식은 무조건 true/false 중 하나의 값을 가져야 하므로 조건식이 많아질 수 밖에 없지만, switch 조건식의 값이 int형 범위의 정수값 모두를 포함하므로 같은 기능의 if문보다 속도가 빠르다!
case문에는 오로지 리터럴이나 상수만을 허용한다. (변수X)
public static void main(String[] args) {
int score = (int)(Math.random()*10)+1;
swtich(score*100) {
case 100:
System.out.println("당신의 점수는 100이고, 상품은 자전거입니다.");
break; //요 break문을 통해 switch문의 실행 종료
case 200:
System.out.println("당신의 점수는 200이고, 상품은 TV입니다.");
break;
case 300:
System.out.println("당신의 점수는 300이고, 상품은 노트북입니다.");
break;
case 400:
System.out.println("당신의 점수는 400이고, 상품은 자동차입니다.");
break;
default:
System.out.println("죄송하지만 당신의 점수에 해당상품이 없습니다.");
}
//당신의 점수는 100이고, 상품은 자전거입니다.
}
Math.random()
을 이용해 0 이상 10미만의 double형 변수값을 임의로 얻고, 10을 곱한뒤 int로 형변환 하고 1을 더해 1이상 11미만의 수로 만들어준다.
그러나 일부러 break문을 사용하지 않는 경우도 있다.
switch(level) {
case 3:
grantDelete();
case 2:
grantWrite();
case 1:
grantRead();
}
차례대로 가장 높은 3등급을 가진 사용자는 삭제, 작성, 읽기 3가지의 기능을 모두 가지며 낮은 1등급을 가진 사용자는 읽기 권한 밖에 가지지 못한다.
= 어떤 작업이 반복적으로 수행되도록 할 때 사용
= 주로 반복횟수를 알고 있을 때, counter가 반복문 내 필요할 때
= for(초기화;조건식;증감식) {실행문}
//for문의 작성 방법
for(;;) {} /*블럭 안의 문장들이 무한히 반복*/
for(int i = 0;;) {} /*for문 안에서만 유효한 i 선언후 0 초기화*/
for(int i = 1, j = 1; i < 10 && i*j < 50; i++, j+= 2)
/*쉼표를 활용해 하나 이상의 변수를 선언 및 초기화*/
int sum = 0;
int i;
for(i = 1; i <= 10; i++) {
sum += i;
}
여기서 변수 i는 for문을 감싸는 블럭 안에서만 유효하기 때문에 바깥에서 값을 불러올 수 없다. 그래서 선언부분을 for문 바깥으로 옮겨도 된다.
사실 여기서 궁금했던 건 마지막 i의 값은 10이지만 for문이 실행된 후 i값은 11이 되어있는 것이다. 추후에 찾아서 적어보도록!!!!!
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
System.out.print("i와 j: "+i+" "+j);
}
System.out.println();
}
// i와 j: 1 1
..
i와 j: 1 n
i와 j: 2 1
..
i와 j: n n
이렇게 외부 반복문이 한번 반복할 때마다 내부 반복문의 전체가 반복된다.
currentTimeMillis()
를 이용해 for문 이전과 이후의 시간을 얻어 for문 수행에 걸린 시간도 알아볼 수 있다.long start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {}
long end = System.currentTimeMillis();
System.out.println("소요시간 = "+end-start);
= 조건에 따른 반복만 필요할 때
{}
구성간단한 while문 예제
public static void main(String[] args) {
int sum = 0;
int i = 0;
while((sum += ++i) <= 100) {
System.out.println(i+" - "+sum);
}
}
= while문의 변형(기본적인 구조가 같음)
= 블럭{}
이 먼저 수행된 후 조건식을 판단!
= do {/*결과가 true일 때 수행될 문장을 적음*/} while(조건식)
{}
이 수행되지 않을 수 있지만, do-while문은 최소한 한번
은 수행될 것을 보장.public static void main(String[] args) throws java.io.IOException {
int input = 0;
System.out.println("문장을 입력하세요.");
System.out.println("입력을 마치려면 x를 입력하세요.");
do {
input = System.in.read();
System.out.print((char)input);
} while(input != -1 && input != 'x');
}
System.in.read()
를 이용해 사용자로부터 입력을 받는다.
= 현재 위치에서 가장 가까운 switch문 or 반복문을 벗어나는데 사용
= 반복문 내에서만 사용됨
= 반복이 진행되는 中 continue가 있다면 반복문의 끝으로 이동해 다음 반복으로 넘어감
= 전체 반복 중 특정 조건을 만족하는 경우를 제외하고 싶을 때 Good
for(int i = 0; i <= 10; i++) {
if(i%3==0) continue;
System.out.println(i);
}
// 1 2 4 5 7 8 10 출력(줄바꿈으로)
= 여러 반복문이 중첩돼 있을 때 반복문 앞에 이름을 붙이고 break문과 continue문에 이름을 지정해줌
= 하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있다
public static void main(String[] args) {
Loop1 : for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= 9; j++) {
if(j==5)
break Loop1;
System.out.println("i와 j: "+i+" "+j);
}
}
}