[Java] 배열과 열거형

 

배열


▪ 배열은 하나의 변수에 어떠한 타입의(혹은 이를 상속받거나 구현하는 타입)값(혹은 객체)를 여러개 받기 위해 사용한다.
▪ 메모리상의 동작방식은 참조타입에 가깝지만, 그 자체로 타입이지는 않기 때문에 별도의 메서드나 속성(length 제외)을 가지지 않고
   이에 기초타입과도 비슷하다고 할 수 있겠음. (너무 신경안써도 됨)

타입[] 변수이름;
위 방식으로 선언할 수 있으며, 여기서 대괄호는 진짜 적어야 함 가령, 정수타입 배열은 아래와 같이 만든다.

int[] numbers;
배열의 이름은 복수형(Plural)으로 짓는 것이 일반적이며 (number → numbers), 객체화시 원소를 직접 지정하거나, 그게 싫다면 배열의 길이를 지정해주어야한다.
int[] numbers = new int [10];
 
위 예는 길이가 10인 정수배열이며, 말 그대로 정수값을 10개 가질 수 있는 배열이다.

 int[] numbers = new int[]{1,3,5,7,9};
위 예는 1,3,5,7,9 의 값 5개를 가지는 배열이다. 값을 직접 대입하거나, 길이를 지정할 수는 있지만 둘다 동시에 하지는 못한다는 점에 유의한다.(위 예에서 new int[]는 생략할 수 있다.)

▪ 배열이 가지는 각 원소는 인덱스 번호로 접근할 수 있고 인덱스 번호는 항상 0으로 시작한다.

int[] numbers = {1,3,5,7,9};
System.out.println(numbers[2]); // 5
마찬가지로 첨자 연산자를 활용하여 그 값을 변경할 수 있다.

int[] numbers = {1,3,5,7,9};
System.out.println(numbers[1]); // 2
numbers[1] = 3;
System.out.println(1]);//3

0보다 작거나 배열의 길이에서 1을 뺀 값을 초과하는 인덱스 번호를 배열에서 조회할 경우가 IndexOutOfBoundsException 이 발생한다.
int[] numbers = {1,3,5,7,9};
System.out.println(numbers[5]); // IndexOutOfBoundsException

▪ 배열의 길이는 이가 가지는 length 속성에 접근하여 확인할 수 있다. 또한, 해당 값에서 1을 뺀 값은 항상, 무조건 해당 배열의 마지막 요소의 인덱스 번호이다.
int[] numbers = {1,3,5,7,9};
System.out.println(numbers.length); // 5
System.out.println(numbers[numbers.length -1 ]); //9

▪ 이미 그 길이가 정해진 배열에서 원소를 삭제하거나 추가할 수 없기 때문에 상당히 골치아픈 절차를 밟아야 한다.
가령, 1,3,5,7,9의 내용을 가진 배열에 11을 추가하고싶다면 아래와 같이 한다.

 int[] numbers = {1, 3, 5, 7, 9};
         int[] newNumbers = new int[numbers.length + 1]; // 위 배열 보다 길이가 1 더 큰 배열을 초기화 한다.
         for (int i = 0; i < numbers.length; i++) {
             newNumbers[i] = numbers[i];
         } // 기존의 numbers 배열에 있는 원소들을 newNumbers 배열에 옮겨준다.
         newNumbers[newNumbers.length - 1] = 11; // 마지막 원소에 11이라는 값을 지정해준다.

 



 열거형

▪ 열거형(Enumeration)은 어떠한 공통된 특징으로 묶어낼 수 있는, 그 종류가 동적이지 않고 상당히 제한적인 것 (원소)들을 열거할(Enumerate)수 있는 집합니다.
▪ 열거형이 가지는 원소들은 반드시 정적인 상수( static final)이다. 하지만, 별도로 명시하지는 않는다.
▪ 열거형 자체는 타입이지만, 열거형이 가지는 원소들은 열거형 타입인 객체이다.
▪ 명명법 : 
▪ 구조

[접근 제한자] enum [열거형 이름] [implements [구현 인터페이스,...]]? {
[원소,...]?
}
>> 정적인 대상은 어디에서든 동일한 대상이다

'Back > Java' 카테고리의 다른 글

[Java] 제곱계산 반환,홀수만 계산 여러 풀이법  (0) 2023.02.09
[Java] String 클래스  (0) 2023.02.09
[Java] 예외처리(try-catch문, throw~)  (0) 2023.02.09
[Java] Integer 클래스  (3) 2023.02.08
[Java] 객체  (0) 2023.02.08