무한 루프
조건식을 잘못 설정하거나 개발자가 의도적으로 설계한 경우 반복문이 끝나지 않고 계속 반복되는 경우를
무한 루프라고 한다.
무한루프는 프로그램이 한 번 실행되면 계속 반복 수행되어야하거나 특정 조건이 성립되기 전까지 반복을 계속해야 하는 경우에 사용된다.
for(;;){}
while(true){}
1. for문의 무한 루프
for(;;){
System.out.println("Hello, World!");
}
2. while문의 무한 루프
while(true){
System.out.println("Hello, World!");
}
3. 무한 루프 탈출 방법은?
if 조건문을 사용해서 break를 이용해 탈출한다.
int i = 1;
while(true){
i++;
if(i>100000){
break;
}
}
//num이 10만보다 크면 반복 종료
do-while
while문은 조건식을 판별하여 true가 되면 반복을 진행하는 반복문이였다. 그래서 조건이 충족되지 않을 경우
반복문이 실행되지 않을 수 있는데 그와 달리 ,
do-while문은 일단 먼저 반복문을 실행하고 반복문이 끝나는 지점에서 조건식을 판별하여 반복 여부를 결정한다.
그래서 무조건 단 한 번은 반복을 실행한다.
do {
//반복 실행할 문장
} while(조건식);
=> 주의! 반드시 마지막 while문 뒤에 세미콜론(;) 필수다.
int i = 11;
do {
System.our.println("Hello,World!")
} while(i<=10);
배열 (Array)
1. 같은 타입의 여러 데이터를 하나의 묶음으로 다루는 것. 연관된 정보를 그룹화 하는데 사용된다.
=동일한 데이터타입을 갖는 변수들의 집합
2. 배열은 메모리 상의 연속된 공간에 생성된다.
=따라서, 한번 생성한 배열의 크기는 변경이 불가능하다.
3.기본 데이터타입과 참조 데이터타입 모두를 배열로 생성 가능
4. 저장된 각 데이터들은 배열명(변수명)을 사용하여 관리
5. 배열의 크기는 배열명, length 속성을 사용하여 알아낼 수 있음
6. 배열 생성 시 각 데이터 저장 공간에는 자동으로 인덱스(첨자)가 부여됨
=인덱스 번호는 0부터 시작되며 배열크기 -1 까지 부여됨
ex) 5개 자리 배열 공간의 인덱스 : 0 ~ 4번까지
7. 배열을 사용하려면 배열 선언 -> 생성 -> 초기화 단계를 거쳐야 한다!
8. 배열을 생성하면 자동으로 해당 데이터타입의 기본값으로 초기화된다!
배열 선언하기
데이터타입[] 배열변수명 :
배열 선언만 하면 일반적인 데이터 저장은 불가능하다. 배열 생성을 하지 않으면 데이터 저장 공간이 없음
뒤에 배열이 생성된 후에, 배열의 주소값을 저장하기 위한 변수를 선언하는 과정이다!
배열 생성하기
배열변수명 = new 데이터타입[배열크기];
Heap이라는 메모리 공간에 실제 데이터 저장이 가능케 하는 연속된 공간을 할당받는다.
해당 메모리 공간의 주소값을 배열명(변수명)에 저장
ex. heap 영역에 int형 데이터 5개를 저장할 수 있는 연속된 공간 5개 생성 후 해당 공간의 "주소값"을
변수 score에 저장.
배열 초기화하기
변수명[인덱스] = 데이터;
변수명에 해당하는 주소값을 따라가면 실제 배열 공간이 나오고 해당 공간의 인덱스 번호에 해당하는 공간에 데이터를 저장한다.
또한 컴퓨터는 숫자를 0부터 카운팅 하는 특성이 있기 때문에 [0],[1].. 순서로 자리를 매긴다
그러나 존재하지 않는 인덱스 번호를 지정하면 실행 시 오류가 발생한다.
반드시 배열명과 인덱스 번호를 조합하여 저장 공간을 명시해야 한다.
ex) 배열크기를 3으로 지정했는데 [4]로 초기화할 경우 오류 발생.
//배열을 사용하여 점수 (정수형 데이터) 5개를 저장
int[] score;
//배열 생성
score = new int[5];
//배열 초기화
score[0] = 90;
score[1] = 10;
score[2] = 70;
score[3] = 100;
score[4] = 80;
* 배열 인덱스 사용시 존재하지 않는 인덱스를 사용한 경우 컴파일 과정에서는 아무 문제가 없지만
코드를 실행하면 문제가 생긴다.!
//boolean 타입 배열을 저장하는 변수 bArr을 선언하고
//2개의 boolean 타입 데이터를 저장하는 배열 공간을 생성하고 0번에 true 입력
boolean[] = bArr;
bArr = new boolean[2];
bArr[0] = true;
실행하면 bArr[1] 은 false 가 나온ㄷㅏ. (boolean 의 기본형 false)
배열 선언과 생성을 한번에 하기
원래는
데이터타입[] 변수명; <= 배열 선언
변수명 = new 데이터타입[배열크기]
이 둘을 이어주면 된다.
데이터타입[] 변수명 = new 데이터타입[배열크기]
초기화도 같이 할 순 없을까?
배열 선언과 생성, 초기화를 한번에 수행하기
데이터 타입[] 변수명 = {데이터1,데이터2,...데이터n};
중괄호에 들어가는 데이터 수만큼의 크기를 갖는 배열이 생성되고, 지정된 값으로 초기화까지 이뤄진다.
사용할 데이터가 미리 다 준비된 경우에만 배열 ~ 초기화를 한번에 수행할 수 있다.
---------------------------------
배열의 모든 요소에 접근하는 반복문
ex) for문을 사용해 배열 인덱스 0 ~ 4까지 반복하기
int[] arr = {10,20,30,40,50};
for(int i = 0; i <score.length; i++){
System.out.println(arr[i]);
}
for의 조건문에 구체적인 숫자 대신에 배열명.length를 넣어주면 간단하다.
'develop > Java' 카테고리의 다른 글
메소드 method -(1) (0) | 2021.02.03 |
---|---|
배열(Array) - 2차원 배열 (0) | 2021.01.31 |
반복문 제어 break, continue (0) | 2021.01.27 |
for 문과 while문 - 중첩 (2) (0) | 2021.01.25 |
for 문과 while문 - (1) (0) | 2021.01.23 |