기타

퀴즈 6회 오답노트

whyHbr 2024. 3. 30. 14:52
728x90
반응형

 auto boxing 오토박싱 :

기본형을 포장 클래스로 자동 변환해주는 기능. 따라서 사용자는 명시적을 new 키워드를 사용해 포장 클래스의 객체를 생성할 필요 없이 기본형 값을 직접 해당 포장 클래스의 참조 변수에 해당할 수 있다. 

// 정수형 기본형 변수
int primitiveInt = 10;

// 정수형 포장 클래스 변수
Integer wrapperInt;

// 오토박싱: 기본형 값을 포장 클래스 변수에 할당
wrapperInt = primitiveInt;

// 오토박싱 후, 포장 클래스 변수 사용
System.out.println("Wrapper Integer Value: " + wrapperInt);

 

 

auto unboxing 오토 언박싱:

포장 클래스 객체를 기본형 값으로 자동 변환해주는 기능

// 정수형 기본형 변수
int primitiveInt;

// 정수형 포장 클래스 변수
Integer wrapperInt = 20;

// 오토 언박싱: 포장 클래스 값을 기본형 변수에 할당
primitiveInt = wrapperInt;

// 오토 언박싱 후, 기본형 변수 사용
System.out.println("Primitive Integer Value: " + primitiveInt);

 

포장 클래스 Wrapper class?

기본형 데이터를 객체로 감싸는 클래스이다.

포장 클래스를 사용하면 기본형 데이터(int, double)를 객체(Integer, Double)로 다룰 수 있다.

//기본형인 int의 값을 객체로 래핑
Integer num = 10; // 오토박싱
int value = num; // 오토 언박싱

//기본형 double을 객체Double로 래핑
Double pi = 3.14159; // 오토박싱
double value = pi; // 오토 언박싱

//boolean -> Boolean
Boolean flag = true;
boolean value = flag;

 

자바 컬렉션 인터페이스란

List: 순서가 있고 중복을 허용한다. ArrayList, LinkedList, stack

Set: 순서를 유지하지 않는 데이터의 집합. 중복을 허용하지 않는다. HashSet, TreeSet

Map: key, value 쌍으로 이루어진 데이터 집합. 순서는 유지되지 않으며 키는 중복이 불가하고 값은 중복이 가능하다. HashMap, TreeMay

Stack: Last in First out, LIFO 후입 선출 구조인 자료구조. Stack, ArrayDeque

Queue : Frist in First Out FIFO 선입선출 구조인 자료구조. Queue, ArrayDeque

 

 제네릭 Generic이란

제네릭이란 데이터의 타입을 일반화한다는 것을 의미한다. 

클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정한다. 

 

장점: 클래스나 메소드 내부에서 사용되는 객체의 타입 안전성을 높일 수 있다.

반환 값에 대한 변환 타입 및 검사에 들어가는 시간을 줄일 수 있다.

 

 선언 및 생성 방법

class Array<T>{
    T element;
    void setElement(T element){
        this. element = element;
    }
    T getElement(){ return element; }
}

 T를 타입 변수라고 하며, 임의의 참조형을 말한다.

T는 지정 값이 아니다. 아무 문자 사용 가능하고 여러 개의 타입 변수는 쉼표, 로 구분해 명시 가능.

타입 변수는 클래스에서 뿐만 아니라, 메소드의 매개변수나 반환 값으로도 사용 가능. 

 

제네릭 클래스를 생성할 때는 타입 변수 자리에 실제 사용할 타입을 명시해야한다. 

Array<Integer> arr = new Array<Integer>();

타입 변수로 Integer를 사용. 제네릭 클래스를 생성할 때 사용 할 타입을 명시하면 내부적으로는 정의된 타입 변수가 명시된 실제 타입으로 변환되에 처리된다.

 

 타입 변수 사용시, 기본 타입을 명시 할 수 없다. Wrapper 클래스를 사용해야만 한다. 

기본 타입 (byte, short, long, float, double, boolean) 의 첫문자를 대문자로 바꿔주기만 하면된다.

예외는 int -> Integer, char -> Character

 

 

 함수형 프로그래밍이란,

순수 함수를 기반으로 데이터 처리와 상태 변화를 최소화하는 방식의 프로그래밍 기법.

순수함수 : 동일한 입력에 대해 항상 같은 값을 반환. 외부 상태를 변경하지 않는 함수.  코드 복잡성에 따른 부작용을 최소화하고, 유지보수와 테스트를 용이하게 실행 가능.

 

 람다식 lambda expressions

메소드를 하나의 식으로 표현한 것이다. 익명 함수를 표현하는 간결한 문법. 다른 함수의 인자로 전달하거나, 함수에서 반환값으로 사용할 수 있다.

람다식의 구현 대상은 함수형 인터페이스로 제한된다. 

기본 문법 : 2개 이상의 매개변수 사용 시엔 괄호를 넣어야함. 매개 변수가 없을 때는 () 로 매개 변수 부분을 표현.

매개변수 개수와 상관없이 복잡한 실행문을 작성할 시, 중괄호를 사용 코드 블록 생성해야한다. 

(매개변수 목록) -> { 함수 body}

int min ( int x, int y){
    return x < y ? x: y;
}

메소드

 

(x, y) -> x < y? x:y;

람다식. 클래스를 작성하고 객체를 생성하지 않아도 메소드를 표현할 수 있다. 

 

하지만 자바에서는 클래스의 선언과 동시에 객체를 생성하므로 단 하나의 객체만을 생성할 수 있는 클래스를 익명 클래스라고 한다. 따라서 자바에서 람다식은 익명 클래스와 같다고 할 수 있다. 

 

 익명 클래스란

이름이 없는 클래스. 클래스의 정의와 인스턴스 생성을 동시에 할 수 있다. 

외부 변수를 참조할 때에는 해당 변수가 final상수 여야 한다.

익명 클래스는 클래스명을 명시하지 않기 때문에 다른 곳에서 재사용이 불가능하다. 일회용 클래스이다. 

생성자를 선언할 수 없다. 오로지 단 하나의 클래스나 단 하나의 인터페이스를 구현, 상속 받을 수 있다.

 

 함수형 인터페이스란

추상 메서드를 하나만 가지고 있는 인터페이스. @FunctionalInterface  어노테이션으로 함수형 인터페이스임으로 표시한다. 

람다식을 사용할 때는 람다식을 저장하기 위한 참조 변수의 타입을 결정해야 하는데, 람다식을 하나의 변수에 대입할 때 사용하는 참조 변수의 타입을 함수형 인터페이스라고 한다. 

 

728x90

'기타' 카테고리의 다른 글

퀴즈 8회 오답노트  (0) 2024.04.26
퀴즈 7회차  (0) 2024.04.12
퀴즈 오답노트  (0) 2024.03.22
퀴즈 4차 오답노트  (1) 2024.03.15
퀴즈 2회차 오답  (0) 2024.02.23