Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)에서 배열은 기본 타입일까요, 객체일까요?

배열은 자바에서 객체다

자바에서 배열은 객체(object)로 취급됩니다. 그 이유는 배열이 'new' 키워드를 사용하여 생성될 수 있기 때문입니다. 'new' 키워드(연산자)는 항상 객체를 생성할 때 사용되며, 바로 이러한 특성 때문에 배열 역시 객체로 인식되는 것입니다.

또한 모든 배열의 직계 부모 클래스, 즉 슈퍼 클래스는 'Object' 클래스입니다. 자바의 모든 배열 타입은 특정 클래스에 속하며, 이는 정수(int) 배열 타입, float 배열 타입, double 배열 타입 등 각각에 대해 명시적인 클래스가 존재한다는 의미이기도 합니다.

배열은 동적으로 생성할 수 있을 뿐만 아니라, 생성된 후 변수에 할당하는 것도 가능합니다.

예제 코드

public class Demo{
   public static void main(String[] args){
      System.out.println("매개변수 args는 슈퍼 클래스 Object의 인스턴스인가? ");
      System.out.println(args instanceof Object);
      int[] my_arr = new int[4];
      System.out.println("배열 my_arr은 슈퍼 클래스 Object의 인스턴스인가? ");
      System.out.println(my_arr instanceof Object);
   }
}

실행 결과

매개변수 args는 슈퍼 클래스 Object의 인스턴스인가?
true
배열 my_arr은 슈퍼 클래스 Object의 인스턴스인가?
true

코드 설명

위 예제의 'Demo' 클래스에는 main 함수가 포함되어 있으며, 'instanceof' 연산자를 사용해 두 가지를 확인합니다. 첫째, main 메서드의 매개변수 'args'가 Object의 인스턴스인지, 둘째, 'new' 키워드로 새로 생성된 배열 'my_arr'이 Object의 인스턴스인지 검사합니다. 두 경우 모두 true가 반환되며, 그 결과가 콘솔에 출력됩니다.

배열이 객체라는 점이 주는 의미

배열이 객체이기 때문에 다음과 같은 특징을 가집니다.

  • Object 클래스가 제공하는 메서드(clone(), toString(), equals() 등)를 호출할 수 있습니다.
  • 배열은 고유한 length 필드를 통해 길이 정보를 제공합니다.
  • 다형성에 따라 Object 타입의 참조 변수에 배열을 저장할 수 있습니다.

결론적으로, 자바에서 배열은 단순한 기본 타입(primitive type)의 나열이 아니라, 힙(heap) 영역에 생성되는 하나의 독립적인 객체라고 이해하는 것이 정확합니다.