Notice
Recent Posts
Recent Comments
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Spring & Java

[5일차] [내일배움캠프 사전캠프] + 스타터 노트 작성하기 본문

내일배움캠프 사전 학습

[5일차] [내일배움캠프 사전캠프] + 스타터 노트 작성하기

dev.hyuck 2025. 11. 14. 16:35

● JAVA 1 - 9 배열 - 데이터 관리의 시작

 

(1) 배열

(2) 배열의 길이

(3) 배열 선언(4) 배열의 요소

 

배열탐색ㄴ 향상된 for문

 

2차원 배열

 

(1) 배열이 무엇인가?● 비슷한 주제의 데이터들을 하나의 그룹으로 묶어서 표현하는 방법.● 관련된 데이터를 편리하게 관리하기 위해 사용 된다.● 모든 자료형의 종류로 배열을 만들 수 있다.

 

[ 배열은 왜 배워야 할까? ]

○ 나는 자바 세상의 모험가들을 관리하는 길드장 입니다.

○ 모든 모험가의 이름을 변수에 담아 관리 합니다.

○ 하지만 관리해야 할 모험가의 수가 100명이라면? 1000명이라면 어떻게 될까요?

○ 중간에 다른 데이터가 섞여 있다면 프로그램 유지 보수가 복잡해집니다.

 

public class ArrayMain1 {

    public static void main(String[] args) {
        String name1 = "gygim";
        String name2 = "Steve";
        String name3 = "Grace";
        ...
        String name1000 = "Isac";
    }
}

 

○ 관련된 데이터를 편하게 관리하기 위해 사용 되는것이 배열 입니다.

○ 모험가의 관련된 사람을 찾으려면 adventurerList 변수에 접근 하기만 하면 됩니다.

String[] adventurerList = {"gygim", "Steve", "Grace", ...};

 

(2) 배열의 길이

 

● 배열의 길이는 배열에 들어갈 수 있는 데이터의 개수를 의미 합니다.

배열을 만들 때 한번 크기를 정하면 변경할 수 없습니다. (정직배열)

● 아래 문법으로 배열의 길이를 구할 수 있습니다.

ㄴ (배열이름).length

int arrLenght =  adventurerList.length;

 

(3) 배열 선언 (Array Declaration)


● 배열 문법  new 키워드를 사용해 배열을 선언 할 수 있습니다.

자료형[] 변수이름 = new 자료형[배열의길이]; // 배열선언

 

5개의 정수형 데이터를 관리할 수 있는 배열을 만들어 봅시다. ( int = 정수 )

 

(3 - 1) 배열 선언의 첫 번째 방법

 

● 배열의 이름과 길이 설정을 각 다른 줄에서 할 수 있습니다.

● arr 이름을 가진 배열을 선언 합니다.

● 배열의 길이를 설정해 줍니다.

// 정수형 배열 arr 선언
int[] arr; // ✅ (1) 배열을 선언합니다.

arr = new int[5]; // ✅ (2) 배열의 길이를 5로 설정합니다. 

// 배열 길이 구하기
int arrLength = arr.length;
System.out.println("arrLength = " + arrLength); // arrLength = 5

 

(3 - 2) 배열선언 

배열 선언과 배열 길이 설정은 같은 한줄에 할 수도 있습니다.

int[] arr = new int[5]; //// ✅ 선언과 동시에 길이를 설정합니다.
int arrLength = arr.length; 
System.out.println("arrLength = " + arrLength); // arrLength = 5

 

● int 자료형은 4바이트 크기의 자료 이다. **

길이가 5인 int형 배열은 메모리에서 20바이트 크기를 가진다.

 

문자열 배열 선언

// 길이가 5인 문자열 배열 arrA 를 선언 
String[] arrA = new String[5];

 

논리형 배열 선언

// 길이가 3인 논리형 배열 arrB 를 선언
boolean[] arrB = new boolean[3];

 

(4) 배열의 요소 (Array element)

 

● 배열 안에 들어있는 각각의 값을 배열의요소 라고 합니다.

● 배열 선언과 동시에 배열의 요소를 설정할 수도 있습니다.

int[] arr = {10, 20, 30, 40, 50}; // ✅ 배열 선언과 동시에 배열의요소 설정

 

( 4 - 1 ) 인덱스 (index) - 배열의 요소에 접근하는 방법 

- 각 배열의 요소에 접근하려면 인덱스(index)를 이해해야 합니다.

● 인덱스의 시작은 0 입니다.

● 인덱스를 통해 원하는 배열의 요소에 빠르게 접근할 수 있습니다.

 

int[] arr = {10, 20, 30, 40, 50};

System.out.println("배열의 1번째 요소 = " + arr[0]);
System.out.println("배열의 2번째 요소 = " + arr[1]);
System.out.println("배열의 3번째 요소 = " + arr[2]);
System.out.println("배열의 4번째 요소 = " + arr[3]);
System.out.println("배열의 5번째 요소 = " + arr[4]);

 

( 4 - 2 ) 배열에 정보 삽입 수정

인덱스를 활용해 각 요소의 값을 삽입 수정할 수 있습니다.

int[] arr = new int[5];
arr[0] = 100; // ✅ 1번째 요소를 100로 설정
arr[1] = 200; // ✅ 2번째 요소를 200로 설정
arr[2] = 300; // ✅ 3번째 요소를 300로 설정
arr[3] = 400; // ✅ 4번째 요소를 400로 설정
arr[4] = 500; // ✅ 5번째 요소를 500로 설정
arr[5] = 600; // ❌ 접근 불가

System.out.println("배열의 1번째 요소는 0번째 인덱스: " + arr[0]); // 100
System.out.println("배열의 2번째 요소는 1번째 인덱스: " + arr[1]); // 200
System.out.println("배열의 3번째 요소는 2번째 인덱스: " + arr[2]); // 300
System.out.println("배열의 4번째 요소는 3번째 인덱스: " + arr[3]); // 400
System.out.println("배열의 5번째 요소는 4번째 인덱스: " + arr[4]); // 500

( 4 - 3 ) 배열 탐색 

- 인덱스를 활용해 배열을 탐색 할 수 있습니다.

 

변수를 인덱스로 활용한다면 반복문을 통해 쉽게 배열을 탐색 할 수 있습니다.

 

int[] arr = {1, 2, 3, 4, 5};

for (int i = 0; i < arr.length; i++) {
		// ✅ 숫자대신 변수i 를 인덱스 활용 
    System.out.println("numbers[" + i + "] = " + arr[i]); 
}

 

( 4 - 4 ) 향상된 for문 - 제일 중요하게 이해하고 넘어가야 될 파트

 

● 배열의 모든 요소를 하나씩 꺼내서 활용할 땐 편리한 반복문 입니다.

● index 직접 활용하지 못합니다.

● for ( int a : arr ) > 배열 arr에서 하나씩 꺼내서 a에 저장 합니다.

 

for(배열의요소 : 배열) {
		명령문;
}

int[] arr = {100, 200, 300, 400, 500};
for (int a : arr) {
		System.out.println("배열의 각 요소 = " + a);
}

 

 

(5) 2차원 배열 ( Two - DimensionalArray)

 

● 2차원 배열은 2차원적인 정보를 표현할 때 적합합니다.

● 첫 번째 인덱스는 행 = 가로 방향을 의미 합니다.

● 두 번째 인덱스는 열 = 세로 방향을 의미 합니다.

● 좌표, 위치 정보(x,y) 등..

 

아래와 같이 2x2 바둑판이 있다고 할 때 바둑알의 좌표를 어떻게 표시하는 것이 좋을까요?

 

boolean[][] board = new boolean[2][2]; // ✅ 2 x 2 2차원 배열 선언

boolean[][] board = {
		{true, false}, // 0행의 0열, 0행의 1열,
		{false, true}  // 1행의 0열, 1행의 1열
};

 

 

● 2차원 배열을 직접 탐색

- 1차원 배열 탐색처럼 인덱스를 활용해 탐색합니다.

System.out.println(board[0][0]); // true 까만돌
System.out.println(board[0][1]); // false 흰돌
System.out.println(board[1][0]); // false 흰돌
System.out.println(board[1][1]); // true 까만돌

 

 

[숙제] 배열 완료하기 

 

public class dev2 {
    public static void main(String[] args) {

        // 배열 코드 짜보기

        int[] players = {23, 45, 12, 78, 34, 56, 89, 67, 91, 28};

        // TODO : 최대값, 최소값 찾기
        int max = players[0];
        int min = players[0];
        int sum = 0;

        for (int i = 0; i < players.length; i++) {

            if (players[i] > max) {
                max = players[i];
            }
            if (players[i] < min) {
                min = players[i];
            }

            sum += players[i];
        }

        // TODO : 평균 계산
        double average = (double) sum / players.length;

        // TODO: 짝수만 ArrayList에 저장
        ArrayList<Integer> evenNumber = new ArrayList<>();
        for (int num : players) {
            if (num % 2 == 0) {
                evenNumber.add(num);
            }
        }

        // TODO : 결과 출력
        System.out.println("---- 숫자 결과 출력 ------");
        System.out.println("최대값 : " + max);
        System.out.println("최소값 : " + min);
        System.out.println("평균값 : " + average);
        System.out.println("짝수 목록 = " + evenNumber);

    }
}

 

● JAVA 1 - 10 메서드 - 모듈화의 시작

(1) 메서드의 흐름● 메서드(함수,기능)는 호출부 선언부로 나누어 진다.● 호출부 - 메서드를 사용하는 곳● 선언부 - 메서드가 정의되어 있는 곳● 호출부 매개변수를 활용해 메서드 연산에 필요한 데이터를 전달할 수 있어야 함.

 

 

 

 

지역변수 의 개념

● 각 메서드는 자신만의 영역을 가지고 있습니다.

● 영역은 중괄호 {} 로 표현 합니다.

● 중괄호 안에 선언된 변수는 중괄호 안에서만 생존할 수 있습니다.

 

 

메서드가 정의 되어 있는곳 > Calculator.java 

메서드를 호출 하는 곳 > Main.java

 

반환 값이 없을 때 void 반대로 반환 값이 있을때는 return

● 메서드가 데이터를 꼭 반환해야하는건 아닙니다.

● 반환 데이터가 없을때는 반환 자료형 위치에 void를 선언해 주면 됩니다.

● void는 "비어있다" 의미를 가지고 있습니다.

 

public class Calculator {
		
		// ✅ void 로 반환 데이터가 없다는 것을 표시
		void sum(int value1, value2) { 
				int result = value1 + value2;
				System.out.println("계산결과는 " + result + "입니다.");
		}
}

public class Main {

		public static void main(String[] args {
				Calculator calculator = new Calculator();
				calculator.sum(1, 2); // ✅ 반환데이터가 없기때문에 받아서 처리하지 않아도 됩니다.
		}
}