2 분 소요

while 문 for 문 중첩 반복문 외전



while 문

첫 반복이 true인 경우 while문은 반복하고 false인 경우 while문은 반복을 하지 않음

while(조건식){
    조건식이 true인 동안 반복할 문장;
    ...
}
int i = 1;
while (i <= 5) {
    System.out.println("안녕하세요. JAVA!");
    ++i;
}
실행결과
안녕하세요. JAVA!
안녕하세요. JAVA!
안녕하세요. JAVA!
안녕하세요. JAVA!
안녕하세요. JAVA!



do ~ while 문

while문과 동일하지만 첫 반복이 false인 경우 while문은 반복을 하지 않지만, do~while문은 반복을 진행한 뒨 조건식을 판단

do {
    조건식이 true인 동안 반복할 문장;
    ...
} while (조건식);
int i = 10;
while(i<10){
    System.out.println("현재 i의 값은 : " + i);
    i++;
}

do{
    System.out.println("현재 i의 값은 : " + i);
    i++;
} while(i<10);
실행결과
현재 i의 값은 : 10



for 문

for(변수의 초기화 ; 조건식 ; 증감식){
    조건식이 true인 동안 반복할 문장;
    ...
}
for(int i = 1 ; i <=5 ; i++){
	System.out.println("Hello Java");
}
실행 결과
Hello Java
Hello Java
Hello Java
Hello Java
Hello Java
int sum = 0;

for(int i = 1 ; i <= 100 ; i ++){
    if(i%2 == 0){
    	sum += i ;
    }
}
System.out.println("1~100까지의 짝수의 합  : " + sum);
실행결과
1~100까지의 짝수의 합  : 2550



continue

반복이 진행되는 도중 continue 문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 시작됨

for(변수; 조건식; 증감식){
    ...
    ...
    if(조건식) continue;
    ...
}
for(int i = 1; i<=10; i++){
    if(i%3==0){
        System.out.print("짝! ");
        continue;
    }
    System.out.print(i + " ");
}
실행결과
1 2 짝! 4 5 짝! 7 8 짝! 10 



break

switch 문 또는 반복문을 벗어날 때 사용

Scanner sc = new Scanner(System.in);
System.out.println("음식자판기");
while(true){
    System.out.println("1.피자 2.방어회 3.햄버거 4.처음처럼 5.종료");
    System.out.print("원하는 메뉴를 선택하세요 >>> ");
    int sel = sc.nextInt();
    switch(sel){
        case 1:
            System.out.println("피자가 나왔습니다.");
            System.out.println("");
            break;
        case 2:
            System.out.println("방어회가 나왔습니다.");
            System.out.println("");
            break;
        case 3:
            System.out.println("햄버거가 나왔습니다.");
            System.out.println("");
            break;
        case 4:
            System.out.println("처음처럼이 나왔습니다.");
            System.out.println("");
            break;
        case 5:
            System.out.println("주문을 종료합니다...");
	}
    if(sel == 5){
    break;
    }
}
실행결과
음식자판기
1.피자 2.방어회 3.햄버거 4.처음처럼 5.종료
원하는 메뉴를 선택하세요 >>> 1
피자가 나왔습니다.

1.피자 2.방어회 3.햄버거 4.처음처럼 5.종료
원하는 메뉴를 선택하세요 >>> 2
방어회가 나왔습니다.

1.피자 2.방어회 3.햄버거 4.처음처럼 5.종료
원하는 메뉴를 선택하세요 >>> 5
주문을 종료합니다...



중첩 반복문

while(조건식){
    while(조건식){
    }
}

for(변수;조건식;증감식){
    for(변수;조건식;증감식){
    }
}
for(int i = 1; i<=3;i++){
    for(int j = 1; j<=2;j++){
    	System.out.println("안녕하세요 Java!!")
    }
}
실행결과
안녕하세요 Java!!
안녕하세요 Java!!
안녕하세요 Java!!
안녕하세요 Java!!
안녕하세요 Java!!
안녕하세요 Java!!



외전

JVM 메모리 구조

  1. Class Loader
    • 클래스 파일들을 묶어서 jVM이 운영체제로부터 할당 받은 메모리 영역인 Runtime Data Area로 적재하는 역할
  2. Execution Engine
    • Class Loader에 의해 메모리에 적재된 클래스들을 명령어 단위로 실행하는 역할
  3. Garbage Collector
    • Heep 메모리 영역에 생성된 객체들 중 참조되지 않은 객체들을 탐색 후 제거


메모리 영역

  1. stack
    • 지역변수, 매개변수, 리턴값, 연산에 사용하는 임시값등이 저장되는 영역
  2. heep
    • new 키워드로 생성된 객체와 배열이 저장되는 영역
  3. method 영역
    • 클래스 멤버변수의 이름, 데이터 타입, 접근 제어자 정보, 필드 정보, 메소드 이름, static 변수, final class 변수,,,
  4. PC register
    • Thread가 생성될 때 마다 생성되는 영역
  5. native method stack
    • 자바 외 언어로 작성된 네이티브 코드를 저장하기 위한 영역 (c/c++ 등의 코드를 수행하디 위한 저장소)


데이터 타입 분류

  • 기본 타입 - byte, char, int, short, long, double, float, boolean
  • 참조 타입 - 배열, 열거, 클래스, 인터페이스

태그:

카테고리:

업데이트: