JAVA/JAVA

Java | Array 배열

pathas 2020. 1. 28. 22:30

Array 배열

같은 타입(자료형)의 여러 변수를 하나의 대표적인 변수로 묶어주는 것

↔ 클래스: 다른 타입의 여러 변수를 하나의 대표적인 변수로 묶어주는 것(C 언어에서의 구조체) + 메소드


배열 특성

  • 많은 양의 데이터를 다룰 때 유용함
    ↔ 변수의 양이 많아지면 관리하기가 어려움
  • 배열의 각 요소는 서로 연속적임
    0부터 시작하는 인덱스번호로 구분
  • 변수가 메모리에 연속적으로 저장되기 때문에 처리속도가 향상됨
    ↔ 기본적으로 변수는 메모리에 무작위로 할당됨
  • 참조형(=객체형, 클래스형) 자료형
    참조형 자료형에는 Class, Array, Interface 등이 포함됨
  • 자동 초기화
    일반 변수는 반드시 값을 초기화해야 하지만, 배열은 자동으로 초기값이 설정됨
    int → 0, double → 0.0, float → 0.0f, boolean → false

배열 종류

  1. 고정 배열: 크기가 처음부터 정해져 있는 배열
    배열의 크기를 늘이거나 줄일 수 없음, 기본적인 배열
  2. 가변 배열(동적 배열): 크기가 입력받은 데이터의 양에 따라 늘어나거나 줄어들 수 있음
    → ArrayList 컬렉션

차원에 따른 배열 종류

  • 1차원 배열 : 데이터가 선처럼 일렬로 연속적으로 저장되어 있는 배열
  • 2차원 배열 : 데이터가 표와 같이 면으로 저장되어 있는 배열
    배열의 요소가 배열인 경우
  • 3차원 배열 : 데이터가 정육면체처럼 입체적으로 저장되어 있는 배열
    배열의 요소가 배열이고 그 배열의 요소가 배열인 경우

※ 2차원 배열까지는 사용할 수 있어야 함


형식

자료형 배열명[] = new 자료형[개수];
// 자료형[] 배열명 으로도 작성 가능

// 배열을 생성하면서 값 초기화
자료형[] 배열명 = {값1, 값2, 값3,,,,};

기본 구조

public class ArgTest {
                        // args라는 이름의 String형 배열이 매개변수로 main()메소드에 전달됨
    public static void main(String[] args) {

        // 배열 생성
        int[] suArray = new int[4];

         // 배열 값 저장
        suArray[0] = 1;
        suArray[1] = 2;
        suArray[2] = 3;

         // 배열 값 출력
        System.out.println(suArray[0]);    // 1
        System.out.println(suArray[1]);    // 2
        System.out.println(suArray[2]);    // 3

         // 자동 초기화로 인해서 0이 저장되어 있음
         System.out.println(suArray[3]); // 0

         // 배열도 객체이기 때문에 주소값이 출력됨
        System.out.println(suArray);  // [I@15db9742
    }

}

가변 배열_Eclipse 활용

Eclipse의 변수 설정을 사용해서 배열의 크기를 조정

상단 메뉴 Run → Run Configurations → Java Application에서 클래스 선택
→ Aruguments 탭 → Program aruguments에 변수 입력

변수 입력 형식: 변수1 변수2 변수3
→ 각각의 변수를 띄어쓰기로 구분함

설정한 변수는 main()메소드에 매개변수로 전달됨

public class ArgTest4 {
                        // String 배열 x를 매개변수로 main()에 전달, 변수: 1 2 3 
    public static void main(String[] x) {

         // 합계를 구할 변수
        int sum;

         // 배열 x의 요소들을 각각 str1 ~ str3 변수에 저장
        String str1 = x[0];
        String str2 = x[1];
        String str3 = x[2];

         // 각각의 변수에 저장된 값 출력
        System.out.println("str1: " + str1);    // str1: 1
        System.out.println("str2: " + str2);    // str2: 2
        System.out.println("str3: " + str3);    // str3: 3

         // String은 int로 강제 형변환 할 수 없기 때문에 integer.parseInt() 메소드 사용 
        int int1 = Integer.parseInt(str1);
        int int2 = Integer.parseInt(str2);
        int int3 = Integer.parseInt(str3);

         // int로 변경한 값들을 sum에 더함
        sum = int1 + int2 + int3;

         // sum 출력
        System.out.println("합계: " + sum);    // 합계: 6
    }

}

Integer.parseInt() & Integer.toString()

Integer 클래스에 내장되어 있는 메소드 parseInt()는 매개변수로 주어진 String 형태의 숫자를 int로 반환,
toString() 메소드는 매개변수로 주어진 int 형의 숫자를 String으로 반환

public class CheckType {
    // 생성자 함수를 이용해서 자료형 확인, 자료형에 따른 문구가 출력되도록 함
    CheckType(String a){
        System.out.println(a + "의 자료형은 String입니다!");
    }

    CheckType(int b){
        System.out.println(b + "의 자료형은 Int입니다!");
    }

    public static void main(String[] x) {
        // int형 숫자를 String형 문자열로 형변환
        int fromInt = 10;
        String toString = Integer.toString(fromInt);
        CheckType ct1 = new CheckType(toString);
        // 10의 자료형은 String입니다!

         // String형 문자열을 int형 숫자로 형변환
        String fromString = "20";
        int toInt = Integer.parseInt(fromString);
        CheckType ct2 = new CheckType(toInt);
        // 20의 자료형은 Int입니다!

    }

}

※ Java에는 JavaScript에서의 typeof 같은 메소드가 없기 때문에 생성자를 이용해서 자료형을 확인해 볼 수 있음


배열에 대해 살펴보았습니다.

배열은 같은 자료형의 여러 데이터를 다룰 때 아주 효율적으로 사용될 수 있습니다.

따라서 배열의 기본 활용을 익혀두는 것은 큰 도움이 될 것입니다.

또한 Integer 클래스의 parseInt(), toString()과 같은 메소드들은

int와 String간 형변환을 할 때 유용하게 사용할 수 있겠습니다.