관리 메뉴

CASSIE'S BLOG

[슈퍼코딩] 45-1강 자바 제너릭과 Wrapper 본문

PROGRAMMING/슈퍼코딩 강의 정리

[슈퍼코딩] 45-1강 자바 제너릭과 Wrapper

ITSCASSIE1107 2023. 12. 14. 20:54
반응형

Wrapper 클래스가 무엇이며 언제 사용하나
?

이전 꺼 복습하면,
New 키워드를 써서 인스턴스 만들면 힙 메모리에 저장된다.

String st1 = ‘st1’;

이런 식으로 할당하면 Constance Pool 에 저장 된다.

스트링을 몇개 붙여서 문장을 만드는 경우에 StringBuilder를 쓰는게 맞다함. 메모리 낭비가 너무 심하다고 함

new String (“Cat is so cute and”);

new String (“Cat is so cute”);

목표: Java의 Wrapper클래스를 살펴보고 Java Generic을 이해한다.

코드재사용성, 디자인패턴, 컬렉션 -> Generics in Java

기본 타입은 객체가 아니지만 Wrapper Class는 객체이다.

박싱과 언박싱을 알아야하는데요.

기본타입과 래퍼 클래스 1:1이 매핑 되는 거니까 그건 박싱

Integer num = new Integer(17); //박싱
int n = num.intValue();//언박싱


 

Integer 타입이여도 계산 다 된다. 


Integer result1 = num1 + num2; //10 인데 이거 또 바로 Integer 가 됨 


Wrapper는 요즘 Auto 언박싱이 실행이 되면서 이전보다는 사용하기가 쉬워짐.

 

요즘에는 박싱을 안하는 추세라고 함. 

 

package exercise.chapter_45;

public class WrapperClassTest {

    public static void main(String[] args){
        // Integer
        Integer integer1 = new Integer(20); // int -> Integer boxing
        Integer integer2 = null;

        int int1 = integer1.intValue(); // Unboxing , Integer -> int 바꾼 것


        Integer integer3 = 20; // AutoBoxing, new Integer(20); 이게 그냥 자동으로 동작한다함
        int int2 = integer3; // AutoUnboxing,

//        System.out.println(integer1);
//        System.out.println(int1);
//        System.out.println(integer3);
//        System.out.println(int2);

        // 연산자
//        System.out.println(integer1 + integer2);
//        System.out.println(integer1 + int1);
//
        // Character
        Character character = new Character('X'); // 'X' charType -> Character 박싱
        char ch1 = character.charValue(); // Character -> char 언박싱

        Character character1 = 'x';
        char ch2 = character1;

        System.out.println(character);
        System.out.println(ch1);

        Character[] characters = {'a', 'b', 'c'};
        char[] chars = {'a', 'b', 'c'};

        String str = String.valueOf(characters);
        String str2 = String.valueOf(chars);

        System.out.println(str);
        System.out.println(str2);

        // Boolean Type
        Boolean boolean1 = new Boolean(true); // true boolean -> Boolean
        boolean b1 = boolean1.booleanValue(); // Unboxing

        Boolean boolean2 = false;
        boolean b2 = boolean2;

        System.out.println(boolean1 & boolean2);
        System.out.println(boolean1 | boolean2);

    }
}
반응형