클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

클래스와 객체 10 - 가변 배열에 대하여 본문

프로그래밍 언어/자바

클래스와 객체 10 - 가변 배열에 대하여

huenuri 2024. 8. 18. 00:42

가변 배열은 배열을 공부할 때 책으로는 학습을 했지만 수업 시간에 이 부분을 설명하셔서 정리해보기로 했다. 객체 배열을 배우고 나서 선생님께서 설명해주셨다. 예제를 풀면서 한번 공부를 해보자.


 

 

 

 

가변 배열 예제 문제 풀기

 

가변 배열 선언 및 생성하기

 

가변배열을 만들고 나서 왜 이렇게 임포트가 안되던지 별 방법을 다 써도 되지 않았다. 나중에 보니 클래스와 같은 이름이면 임포트가 되지 않는다는 것을 알게 되었다. 이럴 때는 클래스 이름을 변경해주어야 한다.

선생님이 패키지에 예제가 한 개밖에 없는데 왜 ex01을 사용하셨는지 이제 알게 되었다.


 

 

 

데이터를 추가하는 기능

데이터를 추가하는 방법은 2가지가 있다. 하나는 그냥 추가하는 것이고, 다른 하나는 추가하게 되면 이전에 있던 자료가 한칸씩 뒤로 밀리게 된다. 매개변수가 다르니 오버로딩이다.

 

 

이 기능은 하나씩 뒤로 추가된다.

 

 

 

하지만 여기서 1번 인덱스에 이도연을 넣으면 원래 있던 인덱스는 한칸씩 뒤로 밀려난다.


 

 

 

 

데이터를 확인하는 기능

 

데이터를 확인하려면 get을 사용하는데 매개변수가 int이니 숫자를 쓰면 되고, return 타입은 String이라 출력하는 기능은 없다. 그렇기에 출력문으로 감싸주는 것이다.

 

 

 

 

 

이렇게 두 명을 출력해보았다. 최영화가 뒤로 밀려났음을 볼 수 있다.


 

 

 

 

 

 

for문을 사용하여 전체 데이터의 이름을 모두 가져왔다.


 

 

데이터 삭제하기

 

0번 인덱스의 값을 삭제하면 그 뒤에 있던 값이 앞으로 당겨진다.

 

 

 

clear를 하면 모든 데이터가 다 삭제된다. void이기에 리턴 타입이 없다. 삭제가 다 되었는지 확인하려면 길이를 출력하면 된다. 0이 된 것을 보니 삭제가 다 되었음을 볼 수 있다.

 


 

 

 

 

 


 

ArrayList 또 다른 기능

int는 ArrayList를 저장할 수 없지만 Integer라는 레퍼런스 타입은 가능하다. 레퍼런스형 즉 객체 형태로만 들어갈 수 있다는 것이다.

 

 

  • ArrayList를 사용하여 정수형(Integer) 데이터를 저장할 수 있는 가변 배열을 생성한다.
  • numbers.add(5); : 숫자 5를 numbers 리스트에 추가한다.

 

추가 보충

  • ArrayList의 동작
    • ArrayList는 크기가 가변적인 배열이다. 요소를 추가할 때 크기가 자동으로 늘어나고, 요소를 삭제할 때 크기가 줄어든다.
    • ArrayList는 인덱스를 사용해 요소를 조회하거나 삭제할 수 있다.
    • 자바의 ArrayList는 제네릭(Generic)을 사용하여, 특정 타입의 데이터만 저장하도록 제한할 수 있다. 예를 들어, ArrayList<String>은 문자열만, ArrayList<Integer>는 정수만 저장할 수 있다.
  • 기본 데이터 타입과 객체 데이터 타입
    • 자바에서 ArrayList는 객체 데이터 타입만 저장할 수 있다. 그래서 기본 데이터 타입인 int를 Integer로 변환해서 사용한다.
    • 이 변환은 자바에서 "오토박싱(Auto-Boxing)"과 "언박싱(Unboxing)"으로 자동으로 이루어진다. 예를 들어, 5는 자동으로 Integer 객체로 변환되어 ArrayList에 저장된다.

 

 

 

학습을 마치고

가변 배열로 만드는 예제가 하나 있는데 무척 길어서 내일 학습해보려고 한다. 사실 내일까지 상속까지 학습을 마치려고 했는데 그건 무리한 목표였다. 내일까지 클래스와 객체 단원 하나도 마치기 어려울 것 같다. 그래도 매일 조금씩 공부하며 많은 것들을 배우고 있다.