본문 바로가기

Java

배열 array

array (배열)의 이해

연관된 데이터를 모아서 통으로 관리하기 위한 데이터 타입이다.

 

배열의 문법

규칙1.
먼저 몇개의 데이터가 들어갈지
⭐크기를 지정해야 사용할 수 있다.

단, 초기화하면 크기는 별도로 지정하지 않아도 된다.

⭐모든 프로그래밍 언어에서 인덱스 번호는 0부터 시작한다
⭐모든 인덱스의 길이는 n - 1이다.

 

package com.array;
public class ArrayTest1 {
    //메인
    public static void main(String[] args) {
        /*
        배열이란?
        연관된 데이터 타입을 한번에 모아서
        통으로 관리하기 위해 사용한다

        배열의 문법

        규칙1.
        먼저 몇개의 데이터가 들어갈지
        ⭐크기를 지정해야 사용할 수 있다.
         */

//        int[] numbers; //배열의 선언
//        numbers = new int[3]; // 크기 지정 - int(4byte) 공간 4개 초기화

        int[] numbers = new int[3]; // 👍 데이터 타입에 대괄호 [] 문법 허용
        int unBoxes[] = new int[5]; // 변수 뒤에 대괄호 [] 문법 허용

        /*
        [][][] <= 값이 안들어있는 상태
        배열 선언과 동시에 값을 초기화 해보자
        초기화하면 크기는 별도로 지정하지 않아도 된다.
         */
        int[] grades = new int[]{1, 2, 3}; // [1][2][3]
        int[] grades2 = {1, 2, 3, 4, 5, 6}; // 👍 [1][2][3][4][5][6]

        //5개 크기 double타입 배열 선언
//        double[] heights = {100.5, 82.75, 65, 67.81, 102};
        double[] doubles = new double[5];

        //공간에 값 채우기
        doubles[0] = 1.0;
        doubles[1] = 1.1;
        doubles[2] = 1.2;
        doubles[3] = 1.3;
        doubles[4] = 1.4;

        /*
        ⭐모든 프로그래밍 언어에서
        인덱스 번호는 0부터 시작한다
         */

        /*
        doubles 배열의 길이는 얼마일까? 5
        doubles 인덱스의 길이는 얼마일까? 4

        ⭐모든 인덱스의 길이는 n - 1이다.
         */
//        doubles[5] = 1.0;

        int[] array1 = new int[57]; // 배열의 길이는 57, 인덱스의 길이는 56
        int[] array2 = new int[123]; // 배열 123 인덱스 122

        String[] stringBox = new String[3];
        stringBox[0] = "가";
        stringBox[1] = "나";
        stringBox[2] = "다";
//        stringBox[3] = "라"; //인덱스의 길이 조심

        System.out.println(stringBox.length); // 3 = 배열의 길이

        System.out.print(stringBox[0]);
        System.out.print(stringBox[1]);
        System.out.print(stringBox[2]);
        System.out.println();

        for (int i = 0; i < 3; i++) {
            System.out.print(stringBox[i]); // 가 나 다
        }
    }//end of main
}//end of class

 

다양한 데이터 타입을 배열로 표현할 수 있다.

package com.array;
public class ArrayTest2 {
    //메인
    public static void main(String[] args) {
        char[] alphabet = new char[26]; // 52바이트 공간

//        alphabet[0] ='A'; alphabet[1] ='B'; alphabet[2] ='C'; alphabet[3] ='D';
//        alphabet[4] ='E'; alphabet[5] ='F'; alphabet[6] ='G'; alphabet[7] ='H';
//        alphabet[8] ='I'; alphabet[9] ='J'; alphabet[10] ='K'; alphabet[11] ='L';
//        alphabet[12] ='M'; alphabet[13] ='N'; alphabet[14] ='O'; alphabet[15] ='P';
//        alphabet[16] ='Q'; alphabet[17] ='R'; alphabet[18] ='S'; alphabet[19] ='T';
//        alphabet[20] ='U'; alphabet[21] ='V'; alphabet[22] ='W'; alphabet[23] ='X';
//        alphabet[24] ='Y'; alphabet[25] ='Z';

        /*
        char 타입은 원래 정수값이다.

        컴퓨터는 0,1의 이진수로 데이터를 표현한다.

        컴퓨터에서 문자를 표현하기 위해 문자표가 존재한다.

        아스키코드, EUC KR 등

        아스키코드
        1바이트(0~127) 안에 1개 문자를 표현 가능

        유니코드
        전세계 통합 문자표

        A 정수값 65
         */
//        System.out.println(alphabet[0] + "" + (int)alphabet[0]); // A 65
//        System.out.println(alphabet[1] + "" + (int)alphabet[1]); // B 66

        /*
        인코딩
        문자를 컴퓨터가 이해할 수 있도록
        숫자(코드 값)로 바꾸는 과정

        디코딩
        숫자(코드 값)를 사람이 이해할 수 있도록
        문자로 바꾸는 과정을 말한다.
         */

        int code1 = (int) 'A'; // 인코딩

        char code2 = (char) 66; // 디코딩

        //반복문을 통해 알파벳 A~Z까지 출력
        for (int i = 65; i < 91; i++) {
            System.out.print((char)i + " "); // A B C.. X Y Z
        }
        System.out.println();

        // alphabet[]에 A부터 Z까지 담아보자
//        for (int i = 0; i < 26; i++) {
//            alphabet[i] = (char)(i + 65);
//            System.out.println(alphabet[0] + "" + (int)alphabet[0]);
//        }

        for (int i = 0; i < 26; i++) {
            alphabet[i] = (char)(i + 65);
            System.out.print(alphabet[i] + " ");
        }
        for (int i = 0; i < 26; i++) {

        }
    }//end of main
}//end of class

 

배열과 난수값을 활용해 로또번호 뽑기

package com.array;
import java.util.Random;
public class ArrayTest3 {
    public static void main(String[] args) {
        /*
        난수 발생 기능
        랜덤한 숫자 하나를 만들어주는 도구

        Random
         */
        Random random = new Random();

        random.nextInt(); // ± 22억 범위 난수 생성

        int ranInt1 = random.nextInt(45) + 1; // 1~45까지 랜덤숫자
        int ranInt2 = random.nextInt(45) + 1; // 1~45까지 랜덤숫자
        int ranInt3 = random.nextInt(45) + 1; // 1~45까지 랜덤숫자
        int ranInt4 = random.nextInt(45) + 1; // 1~45까지 랜덤숫자
        int ranInt5 = random.nextInt(45) + 1; // 1~45까지 랜덤숫자
        int ranInt6 = random.nextInt(45) + 1; // 1~45까지 랜덤숫자

        // 배열과 for문을 활용해 써보기

        int[] lotto = new int[6];

        for (int i = 0; i < 6; i++) {
            lotto[i] = (random.nextInt(45) + 1);
        }

        for (int i = 0; i < 6; i++) {
            System.out.print("[" + lotto[i] + "] ");
        }
    }//end of main
}//end of for

 

로또번호 뽑기 연습, 중복번호 문제는 차차 배워가자

Array.sort(변수명); 오름차순정렬기능

package com.array;
import java.util.Arrays; // 정렬
import java.util.Random; // 난수
public class ArrayMainTest4 {
    //메인
    public static void main(String[] args) {
        /*
        배열은 연관된 데이터 타입을
        통으로 관리하기 위해 사용될 수 있다.

        배열은 보통 for 반복문과 함께 많이 사용된다.

        배열을 사용해 랜덤 숫자 6개를 저장하고 출력해보자
        랜덤한 숫자를 뽑아주는 도구를 준비하자
         */
        Random random = new Random();

        int[] intBoxes = new int[6];

        for (int i = 0; i < intBoxes.length; i++) {
            // i = 0, intBoxes[0] = 랜덤 숫자 하나 저장
            // i = 2, intBoxes[1] = "
            // i = 3, intBoxes[2] = "
            // i = 4, intBoxes[3] = "
            // i = 5, intBoxes[4] = "
            // i = 6, intBoxes[5] = "
            intBoxes[i] = random.nextInt(45) + 1;
            System.out.print("[" + intBoxes[i] + "] ");
        }
        System.out.println();
        //TODO 중복 문제 해결...

        //자바 개발자들이 만들어준 정렬 기능이 있다. (배열)

        Arrays.sort(intBoxes); // 배열을 오름차순으로 정렬
        System.out.println(intBoxes);
        for (int i = 0; i < intBoxes.length; i++) {
            System.out.printf("[" + intBoxes[i] + "]\t"); // \t 탭간격의 의미
        }
    }//end of main
}//end of class

 

배열 작성 연습

package com.array;
import java.util.Random; // 랜덤 도구 호출
public class ArrayTest5 {
    //main
    public static void main(String[] args) {
        // 문자열 배열 선언 및 초기화
        String[] fruits = {"Apple", "Banana", "Orange", "Mango"};
        System.out.println(fruits.length); // 배열길이 4

        System.out.print(fruits[0] + " "); // 사과
        System.out.print(fruits[1] + " "); // 바나나
        System.out.print(fruits[2] + " "); // 오렌지
        System.out.println(fruits[3]); // 망고

        //랜덤 숫자를 뽑아 해당 번호 과일 출력
        Random random = new Random();

        // 0, 1, 2, 3
        System.out.println(fruits[random.nextInt(4)]); // 랜덤 과일

        int choice = random.nextInt(4);
        System.out.println(fruits[choice]); // 랜덤 과일
    }//end of main
}//end of class