Skip to content

8.2 참조 타입과 값 타입

Donam Kim edited this page Oct 17, 2016 · 2 revisions
  • 자바
    • 기본 타입
      • short, int, long, float, double, boolean, char, byte, void(키워드)
      • 스택 또는 CPU 레지스터에 저장 -> 성능 목적
    • 참조 타입
      • 기본 타입을 제외한 모든 타입
      • 힙에 할당
      • new 키워드를 사용해서 만들 수 있다
  • 스칼라
    • JVM의 규칙을 지키면서 기본 타입과 참조 타입간의 구별을 더욱 다듬음
    • 스칼라 타입구조 최상위의 Any 타입
      • 모든 참조 타입은 AnyRef의 서브 타입 (자바의 object는 AnyRef에 가까움)
        • 참조 타입의 인스턴스는 new 키워드를 사용해서 생성
        • 생성자의 인자가 없는 경우 괄호를 생략가능
      • 모든 값 타입은 AnyVal의 서브 타입
        • Short, Int, Long, Float, Double, Boolean, Char, Byte, Unit
        • 값 타입은 공개 생성자가 없음
    • 수 타입과 String 리터럴 값은 자바의 관례를 따른다
      • val name = "Programming Scala" == val name = new String("Programming Scala")
      • (1, 2, 3) == new Tuple3(1, 2, 3)
    • 참조 타입의 인스턴스를 apply 메서드가 있는 객체를 사용해서 만드는 경우 이 함수를 팩토리라고 부른다
      • case 클래스는 팩토리 코드가 들어 있는 동반 객체를 자동으로 만들어주기 때문에 케이스 클래스 인스턴스는 이런 방식을 주로 사용
    • 스칼라는 박싱한 참조 타입의 사용을 최소화 한다 -> 성능을 최대화하기 위해서
Clone this wiki locally