드디어 자바에서 개념으로 정리하기 제일 골치아픈 배열에 대해 알아볼 시간입니다.
변수는 하나의 데이터를 저장하지만~~~
배열의 특징은 여러개의 데이터들을 저장할때 사용되고 인덱스(Index) 구조에 저장합니다. 배열의 길이는 한번 생성을 하면 줄이거나 늘릴 수 없으며 서로 다른 타입을 사용할 수 없습니다. 예를 들어 int로 배열이 선언됬다면 쭉 int만 사용해야 하는데, 문자열을 넣는다고 타입변환을 시도하면 컴파일 오류가 발생하게 됩니다.
■ 여러가지 방법의 배열 생성
배열을 사용하기 위해서는 선언한 다음 new 연산자를 이용하여 배열을 생성하고, 배열의 길이만큼 값을 할당해주어야 합니다. 사용자의 편의대로 골라서 사용하시면 되는데 제가 알고있는 3가지의 방식은 아래사진과 같습니다.
①번은 한줄에 선언과 생성, 할당을 모두 해버리니 간단해서 자주 사용하게 되는 방식입니다.
②번은 배열을 선언한다음 생성+할당을 하는 2개의 절차를 거치는 방식이네요. 주로 한개의 클래스에 배열 선언을 모두 집어넣고, 다른 클래스에 생성과 할당만 하여 복잡한 프로젝트를 만들때 사용할것같습니다.
③번은 배열 선언 / 생성 / 할당을 모두 나눠버리는 방식인데.. 제 생각엔 이렇게도 배열이 가능하다라는것을 보여주는것 같아요.
■ 배열의 길이 ( length )
배열은 알면 알수록 재밌는게 배열을 이용해서 여러가지 프로그램들을 만들어 낼 수 있는데 그래서 그런지 명령어들도 이해만 잘한다면 쉽게 적용할수 있습니다.
다차원배열을 정리하기전 배열의 길이를 한번 짚고 넘어가야 되는게 배열은 0부터 인덱스에 저장되기 때문인데요. 위 사진을 보면 score의 배열은 길이가 3이지만 score[3]번을 호출하면 값이 없습니다. score[0]=10 / score[1]=50 / score[2]=100 의 데이터를 가지고 있기 때문이죠.
그래서 앞으로 배열의 길이는 3이지만, 인덱스 범위는 0~2(0부터 ~ 배열의길이-1)라는걸 꼭 숙지하고 프로그램을 짜야됩니다. 예제로 표현하지 않았지만 만약에 score의 총점을 짜려고 한다면 for(int i=0; i<score.lengh; i++) 에서 ≤(작거나 같다)가 아닌 <(작다)로 부등호를 넣어야 된다는 것이죠.
■ 배열 복사 ( arraycopy )
마지막으로 간단하게 배열의 복사시스템에 대해 정리하고 이번 포스팅은 마치도록 하겠습니다. 활용 용도는 같은 값의 배열변수를 가지고 싶지만 이름을 달리하고 싶을때 사용되겠네요.
그림으로 보면 되게 어려워보이지만 System.arraycopy 라는 기능만 알고 있다면 전혀 어렵지 않습니다. 복사명령어 뒤에 있는 괄호안에 변수가 다섯개가 들어있는데 system.arraycopy를 치면 자동으로 뭐를 넣을것인지 뜹니다.
다차원 배열 정리 → 자바(Java)〃배열(2) 다차원 배열(2차원 배열) + 구구단 예제
그러면 순서대로 복사할 배열 / 복사할 배열의 인덱스 몇번째부터 / 복사 대상 / 복사 대상의 몇번째부터 삽입할건지 / 배열의 길이를 차근차근 넣어주면 되겠습니다. 그러므로 만약에 animal, 0, pet, 0, animal.lenght)를 넣는다면 결과값은 [ 강아지, 고양이, 병아리, null, null, null, null, null)로 출력하게 되는겁니다. 다음글에서는 다차원의 배열을 정리해볼까하는데 벌써부터 긴장되네요.
'프로그래밍 > Java' 카테고리의 다른 글
자바(Java)〃난수를 얻는 랜덤(Random) 메소드 + 클래스 (0) | 2015.11.15 |
---|---|
자바(Java)〃문자열(2) StringTokenizer 클래스는?? (0) | 2015.11.15 |
자바(Java)〃문자열(1) charAt / subString / split (14) | 2015.11.14 |
자바(Java)〃배열(2) 다차원 배열(2차원 배열) + 구구단 예제 (2) | 2015.11.11 |
자바(Java)〃접근 제한자 private/ protected/ public / default (0) | 2015.11.10 |
자바(Java)〃static final과 final의 사용법 (3) | 2015.11.09 |
자바(Java)〃리턴값이 없을때는 void를 사용 (0) | 2015.11.05 |
자바(Java)〃오버로딩과 오버라이딩의 차이 (4) | 2015.11.04 |