본문 바로가기
java

valueof가 뭘까

by 포잉띠 2024. 6. 20.

ArrayList가 뭔지 기본 배열이 왜이렇게 사용하기 불편한지 찾아보다가 valueof라는 신박한놈을 발견하게 되었다.

늘 그렇듯 GPT형님께 도움을 받았다.

 

valueOf 메소드란?

valueOf 메소드는 래퍼 클래스(Wrapper Class)의 정적 메소드 중 하나로, 기본 타입의 값을 해당 래퍼 클래스 객체로 변환하는 역할을 한다. 자바에는 기본 타입과 해당 기본 타입을 객체로 다룰 수있는 래퍼 클래스(Integer, Float, Double)가 있다.

 

왜 valueOf를 쓰는것?

ArrayList의 remove 메소드는 오버로딩되어 있다.

1. remove(int index) : 인덱스를 사용하여 요소를 제거하는 메소드

2. remove(Object o) : 객체를 사용하여 요소를 제거하는 메소드

 

만약 list.remove(2)라고 하면, 인덱스 2의 요소를 제거하라는 의미로 해석됨. 우리가 원하는 것은 값이 2인 요소를 제거하는 것이므로 Integer 객체를 사용하여 remove(Object o) 메소드를 호출해야 한다.

valueOf 메소드는 기본 타입의 값을 Integer 객체로 변환해주기 때문에 이를 사용해서 값이 2인 요소를 제거할 수 있다.

 

예제 코드

import java.util.ArrayList;

public class Example {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(2);

        System.out.println("Before removal: " + list); // [1, 2, 3, 4, 2]

        list.remove(Integer.valueOf(2)); // 값이 2인 첫 번째 요소를 삭제

        System.out.println("After removal: " + list); // [1, 3, 4, 2]
    }
}

 

valueOf 메소드의 사용

integer.vlueOf(2)는 기본 타입 int 2 를 integer 객체로 변환함. 이렇게 하면 remove(Object o) 메소드를 호출하게 되서 리스트에서 값이 2인 첫 번째 요소를 삭제함.

Integer intObject = Integer.valueOf(2);
list.remove(intObject); // 값이 2인 첫 번째 요소를 삭제

 

valueOf 메소드의 장점

- 캐싱 : valueOf 메소드는 작은 값을 캐싱하므로, 동일한 값을 여러 번 생성할 때 메모리 사용을 최적화 할 수 있다. 

예를 들어 Integer.valueOf는 -128부터 127 까지의 값을 캐싱함

- 편의성 : 기본 타입을 객체로 변환할 때 직접 객체를 생성하는 것보다 valueOf 메소드를 사용하는 것이 더 편리함

 

기본 타입과 래퍼 클래스

int -> integer

float -> Float

double -> Double

boolean -> Boolean

char -> Character

long -> Long

short -> Short

byte -> Byte

 

 

흠...완벽히 무슨소리인지 이해못했다. !

 

'java' 카테고리의 다른 글

내 마음의 위험한 배열  (0) 2024.06.27
ArrayList의 toArray()  (0) 2024.06.25
자바 타입 확인 메소드  (0) 2024.06.21
자바를 공부하며  (0) 2024.06.21
JAVA ArrayList 메소드 정리  (0) 2024.06.20