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 인덱스 번호 오류나는 경우
배열안의 인덱스 번호에 없는 번호를 부른다거나 배열안에 값이 채워지지 않은 상태로 데이터를 호출하는 경우 이런 오류가 발생합니다.
'코딩' 카테고리의 다른 글
2022.02.14_6일차_메서드와 메서드 오버로딩 (0) | 2022.02.20 |
---|---|
2022.02.11_5일차_클래스와 객체, 변수의 종류 (0) | 2022.02.19 |
2022.02.10_4일차_다차원배열 (0) | 2022.02.18 |
2022.02.08_2일차_연산자와 제어문(1) (0) | 2022.02.16 |
2022.02.07_1일차_변수와 데이터타입 (0) | 2022.02.15 |
댓글