-
Notifications
You must be signed in to change notification settings - Fork 7
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
- 값 타입은 공개 생성자가 없음
- 모든 참조 타입은 AnyRef의 서브 타입 (자바의 object는 AnyRef에 가까움)
- 수 타입과 String 리터럴 값은 자바의 관례를 따른다
- val name = "Programming Scala" == val name = new String("Programming Scala")
- (1, 2, 3) == new Tuple3(1, 2, 3)
- 참조 타입의 인스턴스를 apply 메서드가 있는 객체를 사용해서 만드는 경우 이 함수를 팩토리라고 부른다
- case 클래스는 팩토리 코드가 들어 있는 동반 객체를 자동으로 만들어주기 때문에 케이스 클래스 인스턴스는 이런 방식을 주로 사용
- 스칼라는 박싱한 참조 타입의 사용을 최소화 한다 -> 성능을 최대화하기 위해서