같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

많은 양의 값(데이터)을 다룰 때 유용하다.

배열의 각 요소는 서로 연속적이다.

int[] score = new int[5];
int score[] = new int[5];

 

배열을 선언한다고 해서 값을 저장할 공간이 생성되는 것이 아니라 배열을 다루는데 필요한 변수가 생성된다.

int[] score ;   //배열을 선언한다.(생성된 배열을 다루는데 사용될 참조변수 선언)
score = new int[5]; // 배열을 생성한다. (5개의 int값을 저장할 수 있는 공간생성)

 

배열의 초기화


생성된 배열에 처음으로 값을 저장하는 것

int[] score = {100,90,80,70,60} ;  //1번방식
int[] score1 = new int[] {100,90,80,70,60};  //2번방식

int[] score;
score = {100,90,80,70,60} ; //에러발생  1번방식



int[] score;
score = new int[]{100,90,80,760,60} // 가능   2번방식



int add(int[] arr)  //메소드의 매개변수로 배열을 직접 넘겨줄때


int result = add({100,90,70 }); //에러발생
int result = add(new int[]{100,90}); //가능

 

배열의 활용


배열에 값을 저장하고 읽어오기

score[3] = 100;
int value = score[3];

배열이름.length는 배열의 크기

for (int i=0; i<score.length;i++) {
        sout(score[i]; }

 

예제 

복권추첨하기

//45사이즈 배열 생성
int[] ball = new int[45];
//45 저장
for (int i=0; i<ball.length;i++) {
    ball[i] = i + 1;
}

int temp =0 ;//임시변수
int  j =0;

//섞기 부분
for (int i=0; i<100; i++) {
    j = (int)(Math.random() *45); //임의의 값 함수
    temp = ball[0];
    ball[0] = ball[j];
    ball[j] = temp;
}

for (int i=0;i<6;i++){
    System.out.print(ball[i]+" ");
}

 

예제

16진수 -> 2진수

//16진수 -> 2진수수
char[] hex = new char[]{'C','A','F','E'};
//16진수를 2진수로 표현한것
String[] binary = new String[]{"0000","1111","0010","0011","0100","0101",
"0110","0111","1000","1001"
        ,"1010","1011","1100","1101","1110","1111"};

String result ="";

for(int i=0;i<hex.length;i++){
    if (hex[i] >='0' && hex[i]<'9') {
        result +=binary[hex[i]-'0'];
    } else {  //A~F면
        result += binary[hex[i]-'A'+10];
}}

System.out.println("hex:" + new String(hex));
System.out.println("binary:" + result);

예제

sort

int [] number = new int[10];
for ( int i=0 ; i<number.length ; i++) {
    number[i] = (int)(Math.random()*10); //0~9
    System.out.println(number[i]);
}
System.out.println();

for ( int i=0 ; i<number.length ; i++) {
    boolean changed = false; // 자리바꿈 발생여부

    for (int j=0 ; j<number.length-1-i ; j++) {
        if (number[j] > number[j+1]) {
            int temp = number[j];
            number[j] = number[j+1];
            number[j+1] = temp;
            changed =true;
        }
    }
    if (!changed) break ; //false면 자리바꿈 x

    System.out.println();
    System.out.println(Arrays.toString(number));

}

 

이중배열


형태 

int [] [] score = new int[5][3]

 

5행 3열의 2차원  배열이 생성됨.

 

 

가변배열

    - 다차원 배열에서 마지막 차수의 크기를 지정하지 않고 각각 다르게 지정

int [] [] score = new int[5][];
score[0] = new int[3];
score[1] = new int[5];

 

배열의 복사

      1. for 문을 이용

      2. system.arraycopy()를  이용

                  - System.arraycopy(arr1,0,arr2,0, arr1.length)

                               - arr1[0]부터 arr2[0]으로 arr1.length개의 데이터를 복사

 

사용자 입력받기 - inputDialog

+ Recent posts