서론
오늘도 자바 기본적인 부분에 대해서 공부를 하였고 배열과 반복문에 대해서 공부를 하였다. 누군가에게 설명하지 못한다면 이해하지 못한것이다. 개념을 명확하게 이해하기 위해 배열과 반복문에 대해 나만의 언어로 재정리를 해보았다.
본론
> 반복문
자바의 반복에는 for문, for-each문, while문, do-while문이 존재하고 각 반복문의 구조나 특징에 대해서 정리를 해보았다.
| 1. for 문
for문은 반복 횟수가 정해져있을 때 유용하게 사용된다. for문은 초기화, 조건식, 증감식, 반복할 코드로 구성되어있다.
for문 구성요소
- 초기화 :
- 반복문이 시작되기 전에 한 번만 실행된다.
- 반복에 사용할 변수를 선언하고 초기화 한다
- 조건식 :
- 반복을 계속할지 여부를 결정하는 조건식을 작성한다.
- 조건식이 true일 경우 반복문 내부의 코드가 실행된다.
- 조건식이 false가 되면 반복문이 종료됩니다.
- 증감식:
- 반복문이 한 번 실행된 후, 반복 변수의 값을 변경한다.
- 일반적으로 증감 연산자(i++, i--)를 사용하여 변수를 증가시키거나 감소시킨다.
- 반복할 코드:
- 위의 조건이 true일 때 반복적으로 실행될 코드 블록이다.
| 2. for - each
for - each 문은 배열이나 컬렉션과 같은 데이터 구조의 각 요소를 순차적으로 반복할 때 사용한다. for 문과 달리 초기화, 조건식과, 증감식이 없어 반복 순서를 제어할 수 없지만 코드가 간결하고 읽기 쉽다는 장점이 있다.
| 3. while
while문은 조건식이 `true`일 동안 계속 반복된다. 반복 횟수가 미리 정해져 있지 않거나 조건에 따라 반복 횟수가 달라질때 유용하게 사용할 수 있다.
| 4. do - while
do - while 문은 while문과 유사하지만 조건식이 반복문의 맨 끝에 위치하고 있다. 즉 , do - while문은 내부 블럭을 먼저 실행하고 조건식을 평가하기 때문에 최소한 한 번은 반복이 실행된다. 그렇기 때문에 최소한 한 번은 반복할 필요가 있을 때 유용하게 사용할 수 있다. 예를 들어, 사용자 입력을 최소 한 번 받거나 특정 작업을 최소한 한 번 실행해야 하는 경우 사용된다.
배열의 개념 정리
배열은 데이터를 저장하고 관리하는 자료구조 중 하나로 동일한 타입의 데이터를 메모리공간에 연속적으로 저장하는 방법을 의미한다.
배열은 같은 종류의 물건이 담긴 상자가 순서대로 나열되어있는 형태라고 생각할 수 있다.
예를 들어, 과일가게 주인은 수박 여러 개 를 상자에 하나씩 담아 번호를 붙여 순서대로 나열해두었다 .여기서 가게 주인은 상자에 번호를 매길때 첫 번째 상자를 기준으로 첫 번째 상자로 터 떨어진 거리를 붙여 두었다 즉, 첫 번째 상자의 번호는 0, 두 번째 상자의 번호는 1 로 이 같은 방식을 사용하여 여러개의 상자를 나열하였다.
위 같은 번호 방식을 사용하면 두 번째 상자의 번호 '1'은 첫 번째 상자로 부터 1만큼 떨어진 위치에 존재한다는 것을 유추 할 수 있다. 만약 손님이 서른 번째 상자에 담겨 있는 수박을 주세요 라고 말을 한다면 가게 주인은 첫 번째 상자로 부터 떨어진 거리인 29가 적혀있는 상자를 찾아야 할 것이다. 이런 방식으로 가게 주인은 손님이 원하는 상자에 매우 빠르게 접근할 수 있게 된다.
이처럼 배열도 위와 같은 방식으로 동작하게 된다. 수박은 데이터가 되고, 수박이 담긴 각각의 상자는 배열의 요소라고 표현한다. 그리고 상자에 적힌 번호는 배열에서 인덱스라고 표현할 수 있다. 마찬가지로 배열의 인덱스는 0부터 시작하며 인덱스는 배열의 시작주소로 부터 떨어진 거리를 의미한다. 배열의 시작주소와 데이터 타입의 크기만 알 수 있다면 원하는 위치에 있는 요소를 매우 빠르게 접근할 수 있다.
2차원 배열
2차원 배열은 배열의 배열로, 배열의 요소가 배열을 가지는 구조이다. 주로 행과 열로 구성된 데이터를 저장하고 처리할 떄 사용된다.
for (int i = 0; i < matrix.length; i++) { // 행 반복
for (int j = 0; j < matrix[i].length; j++) { // 열 반복
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
결론
이미 알고 있었다고 한 내용을 다시 정리하고 기록하기 힘들었지만 나만의 언어로 재정리함으로써 개념을 명확하게 이해할 수 있었고 이렇게 정리한 내용은 좀 더 기억에 오래 남을거 같다라는 생각이 들었다.
'TIL' 카테고리의 다른 글
[TIL | 2024-08-27] 추상 클래스, 추상 메서드, 인터페이스 (0) | 2024.08.29 |
---|---|
[TIL | 2024-08-26] 상속, 오버라이딩 (0) | 2024.08.26 |
[TIL | 2024-08-24] 메서드, 프로그램의 기능적 분할, 객체 지향 프로그래밍 (0) | 2024.08.23 |
[TIL | 2024-08-22] 변수, 기본 타입, 참조 타입, 오토박싱, 언박싱 (1) | 2024.08.22 |
[TIL | 2024-08-21] Git과 GitHub 기초 (1) | 2024.08.21 |