switch 문에 들어갈 수 있는 타입:
- 정수형
- byte, short, int, char (정수형 기본 타입)
- enum (열거형)
- 문자열
- String (Java 7부터 지원)
- 정수형 래퍼 클래스
- Byte, Short, Integer, Character (박싱 타입)
switch 문에 들어갈 수 없는 타입:
- 실수형
- float, double (이유: 실수는 오차가 발생할 수 있기 때문에 switch-case에 적합하지 않음)
- 객체
- Long, BigDecimal, BigInteger 등 대부분의 객체는 불가능
- 배열 및 컬렉션
- 배열, List, Set, Map 등 컬렉션 타입은 지원하지 않음.
- Boolean
- boolean 또는 Boolean 타입은 switch 문에서 사용할 수 없음.
- 대신 if-else 문을 사용
- boolean 또는 Boolean 타입은 switch 문에서 사용할 수 없음.
int array[] = new int[3] {1, 2, 3};
- 오류 발생.
- 배열의 크기를 지정하면서 초기값을 동시에 지정하는 것은 허용되지 않음
- 크기를 명시하면 초기값 없이 비어있는 배열만 생성할 수 있
- 올바른 방법: int array[] = {1, 2, 3}; 또는 int array[] = new int[]{1, 2, 3};
int[] array = new int[3]; // 초기값은 0
int[] array = {1, 2, 3};
int[] array = new int[]{1, 2, 3};
왜 다운캐스팅이 항상 가능한 게 아닌가?
- 다운캐스팅은 부모 타입으로 참조된 자식 객체를 다시 자식 타입으로 되돌리는 작업
- 하지만, 부모 객체 자체를 자식 타입으로 캐스팅하려고 하면 XXX
C1 obj = new C2(); // 업캐스팅 (안전)
C2 obj2 = (C2) obj; // 다운캐스팅 (가능, 실제로 obj는 C2 객체)
C1 obj = new C1(); // C1 객체 생성
C2 obj2 = (C2) obj; // ClassCastException 발생
Encapsulation (캡슐화)
Data Validation
- 캡슐화된 클래스에서는 데이터를 직접 접근할 수 없고, setter 메서드를 통해 데이터 변경
- setter 메서드에서 데이터 유효성을 검사하여 유효하지 않은 값이 설정되지 않도록 보장
Data Hiding
>>>> 캡슐화는 구현 세부 정보를 숨기고 데이터 보호에 초점을 맞추는 반면,
추상화는 동작의 공통적인 인터페이스를 정의하는 데 초점
Data Memory Optimization
- 메모리 최적화는 주로 객체 설계 방식이나 Garbage Collection과 관련
List<String> arrayList = new ArrayList<>();
arrayList.add("Tech");
arrayList.add("Expert");
arrayList.set(0, "Java");
arrayList.forEach(a -> a.concat("Forum"));
arrayList.replaceAll(s -> s.concat("Group"));
System.out.println(arrayList);
- forEach는 리스트를 변경하지 않음.
- replaceAll은 리스트를 변경함.
결과: ["JavaGroup", "ExpertGroup"]
'Certification > OCAJP' 카테고리의 다른 글
OCAJP(1z0-808) 후기 [시험 준비 및 후기] (4) | 2024.12.20 |
---|---|
OCAJP(1z0-808) 후기 [시험등록 및 변경사항] (0) | 2024.12.19 |
OCAJP 복습(5) (1) | 2024.12.11 |
OCAJP 복습(4) (0) | 2024.12.10 |
OCAJP 복습(3) (0) | 2024.12.09 |