ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java 배열 마스터하기: 초보자도 쉽게 이해하는 Array 완벽 가이드
    ☕Java 2024. 12. 9. 14:55
    728x90

    1. 자바 배열(Array)이란?
    자바에서 배열은 같은 타입의 여러 변수를 하나의 이름으로 그룹화하여 관리하는 객체입니다. 배열을 사용하면 데이터를 효율적으로 저장하고 접근할 수 있어 프로그래밍에서 매우 중요한 역할을 합니다.


    2. 배열 선언과 초기화
    배열 선언

    int[] numbers;  // 정수형 배열 선언
    String[] names;  // 문자열 배열 선언

    배열 초기화

    numbers = new int[5];  // 5개의 정수를 저장할 수 있는 배열 생성
    names = new String[]{"김철수", "이영희", "박민수"};  // 초기값과 함께 배열 생성

    배열 요소에 접근하기
    배열의 각 요소는 인덱스를 통해 접근할 수 있습니다. 인덱스는 0부터 시작합니다.

    System.out.println(names[0]);  // "김철수" 출력
    names[1] = "홍길동";  // 두 번째 요소 변경

    배열의 길이
    배열의 길이는 length 속성을 통해 알 수 있습니다.

    System.out.println(names.length);  // 3 출력

    배열 순회하기
    for 루프 사용

    for (int i = 0; i < names.length; i++) {
        System.out.println(names[i]);
    }

    for-each 루프 사용

    for (String name : names) {
        System.out.println(name);
    }

    다차원 배열
    자바에서는 다차원 배열도 지원합니다. 가장 흔한 예는 2차원 배열입니다.

    int[][] matrix = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    배열의 장단점
    장점
    데이터를 효율적으로 관리할 수 있습니다.
    인덱스를 통해 빠르게 접근할 수 있습니다.
    단점
    크기가 고정되어 있어 유연성이 떨어집니다.
    중간에 요소를 삽입하거나 삭제하기 어렵습니다.

    // 학생 점수관리 프로그램을 만든다.
    
            // 학생 3명의 수학 점수를 처리
            // 첫번째 학생은 70점
            // 두번째 학생은 90점
            // 세번째 학생은 77점
    
    //        int math1 = 70;
    //        int math2 = 90;
    //        int math3 = 77;
    //        전체 학생의 총점을 구해라
    //        System.out.println(math1+math2+math3);
    //        System.out.println((math1+math2+math3)/3.0);
    
    // 100명의 데이터(수학점수) / 여러 데이터를, 변수1개로 처리 좀 하자.
    // Data Structure
    // 자바 기본 문법에서 제공하는 것 : 뭐냐하면 Array
    // 결론 : Array는 현업에서 잘 사용하지 않는다. 왜냐면 후져서
    // 예 10명의 배열을 지정 해놨는데 추가적인 칸을 만들수 없어서 
    // 대안 : 현업에서는 ArrayList, HashMap
    // 예: 수학점수가 같은 학생 3명이 있는 경우 int 3번을 써서 변수를 만드는게 아닌
    // 변수이름 "수학점수" 라는것을 하나 만들고 그 메모리 안에 데이터를 쪼개 넣자.
    // (변수이름) → 메모리칸 |70점|77점|90점|
    
    // array(배열 [] ) 로 처리한다 → 여러 데이터를 변수 1개로 처리한다/
    // 몇 개의 데이터를 저장할지, 데이터의 갯수를 설정해야 한다.
    // 비어 있는 공간을 만든다
            int[] mathScore = new int[3]; // ← 3칸짜리 방을 mathScore 만들었다
    // 첫번째 데이터 칸은 0, 두번째 방은 1, 세번째 방은 2
    // 데이터를 넣는다 // 인덱스
            mathScore[0] = 70;  // ← 첫번째 방에 70 이라고 저장해라
    // 두번째 데이터 넣기
            mathScore[1] = 90;  // ← 두번째 방에 90 이라고 저장해라
    // 세번째 데이터 넣기
            mathScore[2] = 77;  // ← 세번째 방에 770 이라고 저장해라
    // 저장된 데이터를 하나씩 끄집어 내서, 더한다.
    // 배열에 저장된 데이터를 가져오는 방법
    // 배열의 첫번째 데이터 가져오기
            System.out.println(mathScore[1]); // 3을 쓸 경우 나오는 에러
    // 전체 총점을 구하시오.
    // 메스스코어를 다 써서 구하기 힘드니 토탈 스코어라는 변수를 하나 만들자
            int totalScore = mathScore[0]+mathScore[1]+mathScore[2];
            System.out.println(totalScore);
    // 전체 평균을 구하시오
            System.out.println(totalScore/3.0);
    // 평균도 변수를 만들자
            double avgScore = totalScore/3.0; // ←소수점이니까 더블로 저장

     
     
     
     

            int[] mathScore = new int[3]; // ← 3칸짜리 방을 mathScore 만들었다
            mathScore[0] = 70;  // ← 첫번째 방에 70 이라고 저장해라
            mathScore[1] = 90;  // ← 두번째 방에 90 이라고 저장해라
            mathScore[2] = 77;  // ← 세번째 방에 770 이라고 저장해라        
            System.out.println(mathScore[3]); // 3을 쓸 경우 나오는 에러

    오류 
    "C:\Program Files\Java\jdk-17\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.3\lib\idea_rt.jar=58765:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\USER\Documents\nhchoi\Github\ArrayTest\out\production\ArrayTest ArrayTest
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
    at ArrayTest.main(ArrayTest.java:39)
     
    배열의 인덱스가 배열의 길이를 벗어났을 때 발생하는 예외입니다
    이 경우, 배열의 길이가 3인데 인덱스 3에 접근하려고 했기 때문에 발생했습니다. 
    배열 인덱스는 0부터 시작하므로, 길이가 3인 배열의 유효한 인덱스는 0, 1, 2입니다
     
     

    // 조건 학생 10명의 영어 점수가 있습니다. 70, 77, 100, 97, 43, 66, 88, 69, 58, 91
    // 문제1. 배열을 만드세요.
    // 문제2. 데이터를 저장하세요
           int[] engScore = {70, 77, 100, 97, 43, 66, 88, 69, 58, 91};
            System.out.println(engScore[3]);
    // 문제3. 총합을 구하세요
    //        System.out.println(engScore.length);
           int total = 0;
           for (int i = 0 ;i< 10 ; i++){
               System.out.println(total = total+engScore[i]);
    

     
    위에 문제 풀이해서 설명을 써보자
     

    728x90
Designed by Tistory.