본문 바로가기

Certification/OCAJP

OCAJP 복습(6)


switch 문에 들어갈 수 있는 타입:

  1. 정수형
    • byte, short, int, char (정수형 기본 타입)
    • enum (열거형)
  2. 문자열
    • String (Java 7부터 지원)
  3. 정수형 래퍼 클래스
    • Byte, Short, Integer, Character (박싱 타입)

switch 문에 들어갈 수 없는 타입:

  1. 실수형
    • float, double (이유: 실수는 오차가 발생할 수 있기 때문에 switch-case에 적합하지 않음)
  2. 객체
    • Long, BigDecimal, BigInteger 등 대부분의 객체는 불가능
  3. 배열 및 컬렉션
    • 배열, List, Set, Map 등 컬렉션 타입은 지원하지 않음.
  4. Boolean
    • boolean 또는 Boolean 타입은 switch 문에서 사용할 수 없음.
      • 대신 if-else 문을 사용

 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