java day4
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 메모리 구조
- Class Loader
- 클래스 파일들을 묶어서 jVM이 운영체제로부터 할당 받은 메모리 영역인 Runtime Data Area로 적재하는 역할
- Execution Engine
- Class Loader에 의해 메모리에 적재된 클래스들을 명령어 단위로 실행하는 역할
- Garbage Collector
- Heep 메모리 영역에 생성된 객체들 중 참조되지 않은 객체들을 탐색 후 제거
메모리 영역
- stack
- 지역변수, 매개변수, 리턴값, 연산에 사용하는 임시값등이 저장되는 영역
- heep
- new 키워드로 생성된 객체와 배열이 저장되는 영역
- method 영역
- 클래스 멤버변수의 이름, 데이터 타입, 접근 제어자 정보, 필드 정보, 메소드 이름, static 변수, final class 변수,,,
- PC register
- Thread가 생성될 때 마다 생성되는 영역
- native method stack
- 자바 외 언어로 작성된 네이티브 코드를 저장하기 위한 영역 (c/c++ 등의 코드를 수행하디 위한 저장소)
데이터 타입 분류
- 기본 타입 - byte, char, int, short, long, double, float, boolean
- 참조 타입 - 배열, 열거, 클래스, 인터페이스