Basic/Java

[Java] Array(배열)

카고형 2020. 3. 26. 23:30
728x90

배열(Array)이란?

  • 동일한 자료 유형의 여러가지 값으로 이루어진 객체(Object)
  • new로 생성되는 참조 자료형이다
  • 배열에 포함된 값들은 기본 자료형(Primitive Type)일 수도 있고
    다른 객체를 참조하는 참조(Reference Type) 자료형일 수도 있다


개인적으로는 하나의 상자(공간)? 를 만들어 정리 하는 느낌이랄까?
10명의 성적을 처리 한다고 하면 10개의 변수로 처리 할 수도 있지만 
배열을 쓰면 성적 이라는 박스에 10개의  물건을 넣어서 처리 하는 방식인거 같다

       public static void main(String[] args) {
       int [] score = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};//score 이란 배열 생성 총 10개의 수를 넣음
       
       for(int i=0; i<10; i++) {//for문을 사용하여 0~9까지 열번 수행 
              System.out.println( "현재  " + (i+1) +"번 점수는? :" + score[i] );
       }
       
              
       }

위 코드 를 돌리면 결과는 다음 그림과 같이 나온다


확실히 배열을 사용 안했으면 score1~10 까지 10개쓰고 10개 출력 하고 하나한나 써야 할것이다
보기 편하기도하고 아무튼 좋은듯? ㅋㅋ

다음으로넘어가기 전에
정리 하실때 어떻게 하시나요? 하나의 공간이 있으면 칸을 만들어서 구분하지 않나요?
음.. 화장실에 보면 수건 두는 수납장이 생각 나는데요 저희 집은 수납장이 3칸으로 분리 되어있고 
위에서부터 예비칫솔, 비누/ 수건 / 샴푸,바디워시 대충 이런식 입니다 
이게 배열 이랑 비슷 한 거 같아요(똑같나? ㅋㅋ)

수납 장이라는 배열을 만들면 그안에 물건들이 이렇게 넣어진 상태일 것이다 
표현 하면 
String[][] 수납장 = new String[2][1];


배열의 선언 하는 두가지의 방법
  • 타입 []  변수;
  • 타입 변수 [];



배열의 초기화

값의 목록이 있다면, {}으로 값의 목록을 지정하여 초기화할 수 있음
탸입 배열명[]  = {값0, 값1, 값2, 값3 ....};

int [] score = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};

이 방식은 배열 변수 선언과 동시에 해 주어야 허용된다.
다음과 같은 방식으로 new 연산자 뒤에 나열 할 수도 있다.

int[ ] score;
score = new int[ ] {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};

new 연사자로 배열 생성

int[ ] intArray = new int[3];
intArray[0] = 3;
intArray[1] = 6;
intArray[2] = 9;

intArray 안에 [0] 은 3이 [1] 은 6이 [2] 은 9 로 저장 되어있다
 
       public static void main(String[] args) {
              int[ ] intArray = new int[3];//일반적인 배열의 선언과 생성

              intArray[0] = 3;//배열의 초기화
              intArray[1] = 6;
              intArray[2] = 9;
              
              for(int i=0; i<intArray.length; i++) {
                //intArray.length에 length맴버는 배열의 길이를 알수있다
                //intArray 배열의 길이는 3이기 때문에 0~2 까지 3번 반복 한다 
                     System.out.println(intArray[i]);
              }
              
       }
}


이번에는 main 함수로 Arguments전달 되는 것을 해보겠습니다



public class HelloWorld {
       public static void main(String[] args) {        
              for(int i=0; i<args.length; i++) {
                     System.out.println("args["+ i +"] : " +args[i]);
              }             
       }
}

위 코드를 작성 하고 실행 하면 아무것도 콘솔창에 뜨지 않는다 이유는 받은게 없어서? ㅋㅋ

배열 형태의 값 목록을 main 함수로 전달 해 보겟습니다

Run - Run Configurations - (x)= Arguments 에서 Program arguments: 안에다 작성 해보겠습니다

이클립스 위에 창? 중에  Run을 누르고 Run Configurations로 들어가준다


(x)= Arguments 선택후 Program arguments: 에가 Java Lnangue is fun 입력


밑에 Run 을 클릭 하면 !!
결과 가 이렇게 나옴

main함수 에 Argument로 인자를 넘기는 법을 해보았다.  



다차원 배열
  • 타입[][] 배열이름 = new 타입[행_수][열_수];

타입은 int, String, double 이있고
배열을두개쓰면 이차원 배열 3개는 3차원 배열이라하고 3개 이상 부터는 다르기 힘드니 조심히 쓰자!

그림을 보고  이해 해보자
int i = new int[4][]; //4개의 행 수 생성




배열의 복사

  • 배열은 한번 생성 하면 크기를 변경할 수 없다
  • 추가호 저장 공간이 필요하다면 원래 배열보다 큰배열을 만들고 이전 배열의 항목값을 복사 해야한다

for 문을 이용한 카피


System.arraycopy()로 배열을 복사 할 수도 있다

System.arraycopy(원본 배열, 시작인덱스, 타겟배열, 시작인덱스, 복사길이)

 
그리고 객체를 좀더 쉽게 처리 할 수 있는 향상된 for문을 제공
카운터 변수, 증감식을 사용하지않고 배열 및 컬렉션 항목의 개수 만을 반복

       public static void main(String[] args) {
              char vowels[] = { 'a', 'e', 'i', 'o', 'u' };
              for (char vowel : vowels) {
                     System.out.print(vowel + "\t");
              }
              System.out.println();
       }
}

위 코드를 작성 후 Run을 하게 되면

 
이런 결과가 나옵니다


이상 배열의 대해서 정리 는 끝 
 ^____^            @
|ㅒㅅㅒ|           @
|\\\\\\\\\\\\\\\\|@
|/  |/            \| \|


728x90