백엔드 부트캠프 35일차 (2024.11.10 일) : Java 참조형 변수 및 래퍼클래스

커비·2024년 11월 10일
0

백엔드 부트캠프

목록 보기
40/49
post-thumbnail

TIL 작성하면서 조금씩 레이아웃을 변경해보려고 한다.
어떤게 내가 알아보기 쉽고, 한 눈에 알아볼 수 있는지 잘 모르겠다.
공부한 내용과 TIL 회고는 따로 나누고 싶었는데 여러가지 방법을 시도해보려고 한다.


📍 참조형 변수타입 및 래퍼클래스

참조형 변수

: 단일공간에 담을 수 없는 복잡한 변수 (길이 예측 불가)
: 래퍼런스가 있어서 어느 공간에 있는 주소값을 바라보고 있는 변수


📝 개념 정리

처음 복습할 때 남겨놓은 이론 정리글이 있으니 참고하면 좋다. 그리고 대학교 수업들으면서 남겨놓았던 교수님의 강의 정리글도 있으니 자세하게 알고 싶다면 참고바란다. (예습 1회, 복습 2회 중이었구나)

래퍼클래스(Wrapper Class) 변수

: 기본형 변수를 클래스로 한 번 랩핑하는 변수

기본 타입래퍼 클래스
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

박싱과 언박싱

박싱 : 기본타입에서 래퍼 클래스 변수로 변수를 감싸는 것
언박싱 : 래퍼 클래스 변수를 기본 타입 변수로 가져오는 것

// 💡 박싱
// Integer 래퍼 클래스 num에 21의 값을 저장
int number = 21;
Integer num = num Integer(number);

// 💡 언박싱
int n = num.intValue(); // 래퍼 클래스들은 inValue() 같은 언박싱 메서드를 제공해줌

기본 개념 알아두기

1byte = 8bit
bit : 0과 1을 표현하는 최소 단위


✅ 개념이 필요한 이유

나만의 정리!

  1. 래퍼클래스가 Null을 처리할 수 있기에 범용성이 좋고 유용하다. 하지만 매개변수를 사용할 때에는 래퍼클래스보다 기본타입을 이용하는게 좋다고 한다.
  2. 래퍼클래스를 사용하면 데이터타입을 객체로 감싸주어 데이터를 관리할 수 있기에 Null을 데이터 값으로 받을 수 있다.
    = 래퍼클래스는 어쩔 수 없이 Null을 다루어야할 때만 사용하는 게 좋다.

💡 사용법

불리언형(boolean)

// (1)boolean / 변수 선언 => 타입 이름 = 값;
        boolean flag = true;
        flag = false; // 재할당

        System.out.println(flag);
        
// 결과 : false

문자형(char)

public class JavaChar {
    public static void main(String[] args) {
        // (2) 문자형(char)
        char alphabet = 'A';
        System.out.println(alphabet);
    }
}

정수형(byte, short, int, long)

public class JavaNumber {
    public static void main(String[] args) {
        // (3) 정수형 (byte, short, int, long)

        byte byteNumber = 127; // -128 ~ 127
        short shortNumber = 32767; // 32,768 ~ 32,767
        int intNumber = 2147483647;
        long longNumber = 9223372036854775807L;

        System.out.println(byteNumber);
        System.out.println(shortNumber);
        System.out.println(intNumber);
        System.out.println(longNumber);
    }
}

실수형(float, double)

public class JavaFloat {
    public static void main(String[] args) {
        // (4) 실수형 (float, double)
        // float(4byte), double(8byte)

        float floatNumber = 0.123F; // 접미사 F 주의!
        double doubleNumber = 0.123F; // 접미사 F 주의!

        System.out.println(floatNumber);
        System.out.println(doubleNumber);
    }
}

참조형 (문자열, 배열)

import java.lang.reflect.Array;
import java.util.Arrays;

public class JavaString {
    public static void main(String[] args) {
        // (5) 참조형 (주소값을 출력함)

        // (5)-1 문자열 변수
        // String helloWorld = "Hello World";
        // System.out.println(helloWorld);

        // (5)-2 배열
        int[] a = {1, 2, 3}; // a는 1, 2, 3을 가진 배열
        System.out.println(a); // a가 가지는 주소값 출력
        System.out.println(Arrays.toString(a));
    }
}

래퍼 클래스 (Wrapper Class 변수)

public class JavaWrapper {
    public static void main(String[] args) {
        // (6) 래퍼 클래스 (Wrapper Class 변수)
        int number = 21;
        
        // Integer num = new Integer(number) // 옛날 방식의 박싱
        Integer num = number; // 요즘 방식의 박싱

        System.out.println(num.intValue()); // 언박싱
    }
}
profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글