본문 바로가기
코딩

2022.02.09_3일차_제어문(2)과 배열

by 흥뷰자 2022. 2. 17.

03일차 

1. 나머지 제어문 중 반복문 while
2. for & 보조제어문( break, continue)

2. 배열

 


 

 

1. while 반복문

 

: 크게 반복할 횟수를 아는 경우와 모르는 경우 둘 다 쓸수 있습니다.  for반복문과 가장 큰 차이점은 횟수를 모를 때 사용할 수 있다는 점입니다. 

while반복문 do-while반복문
기본 구조 while(조건식){ 명령 + 증감식 } 
            >> {실행문} 안에 루프를 나갈 수 있는 증감식 필요
                 while문 밖에 증감식 기준이 되는 변수를 초기화
            
do{
    명령
}while(조건식);
횟수를 알지 못할 때 구조 while(true){ 명령 + break;} 
            >> 종료시점 반드시 지정
 

2. for 반복문

 

: 지정된 수만큼 반복해서 실행

for 반복문  
for( 초기식; 조건식; 증감식 ) {
                                     반복할 코드
}
1) 초기식 : 한번만 실행
2) 조건식 참이면 { 코드 }를 실행하고
3) 증감식 변화를 한번 주고
2) 조건을 검사해서 참이면 { 코드를 } 실행하고
3) 증감식 변화를 한번 주고
2) 조건을 검사해서 거짓이면 종료.
  증감식 부분을 비워둔다면 무한반복문을 만들 수 있지만, 이런형식으로는 잘 쓰지 않습니다. 가독성도 떨어집니다.

 

 



3. 배열 array


같은 타입의 여러 변수를 합쳐 놓은 형태로 데이터 처리 속도에 좋습니다. 그러나 데이터 공간 수정 변경이 어렵습니다.

배열은 공간을 미리 정해놓고 그 안에 데이터를 넣는 방식으로 만들어지는데, 데이터가 하나가 더 들어가고자 한다면 새로운 배열 공간을 만들어서 옮겨담아야 하기 때문입니다.

 

3.1. 배열의 선언 : 일반 변수 선언에서 대괄호만 추가된 형태입니다. 변수 선언과 마찬가지로 공간이 할당되진 않은 상태로 변수만 선언한 것입니다. (참조형의 경우 초기값은 자동으로 null로 잡힙니다.)
타입[] 변수명; 
타입 변수명[]; 

ex)
int[] arr; // 배열 정수값들만 저장가능.
String[] str; //데이터 타입이 스트링 (참조형) 스트링들만 저장가능

3.2. 생성 : new 를 통해 비로소 메모리에 공간을 갖게 되는데 처음부터 배열이 몇 칸이 될지 []대괄호로 정해주어야 합니다. 
arr = new int[5]; 메모리공간 5개

* new : 객체 생성 키워드. 메모리 점유/ 할당

new Scanner(System.in); 스캐너 객체 하나를 생성. 
new Scanner[5];  배열 방을 생성한 것. 위에꺼를 5개 만든 것. 스캐너는 하나만 있어도 입력 얼마든지 받으니까 이렇게 쓸일없음

3.3. 인덱스
* 생성을 하면서 배열의 방 크기를 지정한다고 했는데, 인덱스라는 것은 메모리 공간에 배열이 생성될 때 자동으로 부여되는 방번호를 의미합니다. 일반적으로 숫자를 1,2,3... 으로 1부터 시작하지만 배열의 반번호는 0,1,2,... 로 0부터 시작합니다.  

특정 방 번호의 데이터를 부르고 싶다면 대괄호에 인덱스 번호를 붙이면 됩니다.
arr[인덱스번호]

3.4. length
배열의 길이(방의 개수)를 알려주는 명령어
arr.length ===> 5


3.5. 초기화
생성 시 처음 들어가는 값을 초기값이라 한다. 대입연산자로 생성된 방에 값을 넣어주면 되는 것인데요, 중간에 다른 연산 과정 없이 초기화를 여러번 한다면 마지막에 한 대입만 적용되므로 마지막에 한 행위가 초기화로 볼 수 있습니다.

 

선언, 생성, 초기화 한줄로 주로 표현할 때가 많습니다. 원형을 써야할 때도 있으니 둘 다 익혀두어야합니다.
int[] math = {100, 90, 80, 70, 60}; //축약형 --> 두줄로 나눠서 쓸 때는 new int {} 생략하면 안됩니다. 
int[] math = new int[] {100, 90, 80, 70, 60}; // 원형

+
ArrayIndexOutOfBoundsException 인덱스 번호 오류나는 경우
배열안의 인덱스 번호에 없는 번호를 부른다거나 배열안에 값이 채워지지 않은 상태로 데이터를 호출하는 경우 이런 오류가 발생합니다. 

 

 

 

 

댓글