[TIL] (230822) valueOf()와 parseInt() 의 차이점을 알아보자.

Noh Jihyeon·2023년 8월 22일
0

TIL

목록 보기
8/49
post-thumbnail

알고리즘 문제를 풀다보면 Integer.valueOf()와 Integer.parseInt()가 많이 나온다.
두 메서드가 비슷하다고 생각하는데 어떤점이 같고 어떤점이 다른지 확실하게 정리하는게 좋겠다는 생각이 들었다.



🔸 궁금증

https://school.programmers.co.kr/learn/courses/30/lessons/181845


✅ 내 풀이


class Solution {
    public String solution(int n) {
        String answer = String.valueOf(n);
        return answer;
    }
}

이 문제를 풀면서 이전부터 궁금했던 valueOf()와 perse() 이 두 메서드의 특징과 사용 가능한 자료형의 형태 등 공통점과 차이점을 정리해보았다.


① 공통점:

주로 문자열을 숫자 또는 다른 데이터 타입으로 변환하는 데 사용됩니다.
변환 중에 숫자 형식이 아닌 문자열을 처리하려고 하면 예외가 발생할 수 있습니다.

👉 숫자를 문자열로 변경하는것도 가능함



② 차이점:

  1. valueOf() 메서드:
valueOf() 메서드는 주로 래퍼 클래스들에서 제공됩니다. (Integer, Double, Float, Long 등)
반환 타입은 해당 래퍼 클래스 객체입니다.
반환된 객체는 auto-unboxing에 의해 원시 타입으로 사용될 수 있습니다.
소수점까지 포함하는 실수의 경우도 변환이 가능합니다.
  1. parse() 메서드:
parse 접두사가 있는 메서드들은 대부분 Number 클래스의 하위 클래스에서 제공됩니다.
(Integer, Double, Float, Long 등)
반환 타입은 주로 해당 원시 타입입니다.
정수나 실수 형태의 숫자만 변환 가능하며, 소수점을 가진 실수는 처리하지 않습니다.

👉 parse() 메서드로 숫자 타입이 아닌 다른 데이터 타입이나 문자(char)로 변환하는 데에는 parse() 메서드를 사용하는 것은 일반적이지 않다.




🌟 각 메서드별로 사용 가능한 자료형의 형태예시:



  1. valueOf() 메서드:
Integer.valueOf(String str): Integer 래퍼 클래스에서 사용 가능.
Double.valueOf(String str): Double 래퍼 클래스에서 사용 가능.
Float.valueOf(String str): Float 래퍼 클래스에서 사용 가능.
Long.valueOf(String str): Long 래퍼 클래스에서 사용 가능.
Short.valueOf(String str): Short 래퍼 클래스에서 사용 가능.
Byte.valueOf(String str): Byte 래퍼 클래스에서 사용 가능.
  1. parse() 메서드:
Integer.parseInt(String str): 정수(int)로 변환 가능.
Double.parseDouble(String str): 부동소수점(double)으로 변환 가능.
Float.parseFloat(String str): 부동소수점(float)으로 변환 가능.
Long.parseLong(String str): 정수(long)로 변환 가능.
Short.parseShort(String str): 정수(short)로 변환 가능.
Byte.parseByte(String str): 정수(byte)로 변환 가능.

이외에도 BigInteger와 BigDecimal과 같은 다른 클래스에서도 parse 메서드들을 사용하여 숫자를 문자열로 변환할 수 있다.

🔸정리


비교가 쉽게 Integer.parseInt(s)와 Integer.valueOf(s)라고 가정해본다.

Integer.parseInt(s)는 정수로 변환된 값을 얻을 때 주로 사용된다.
예를 들어, 숫자 연산이나 정수 값을 저장할 변수에 사용될 때 int 자료형을 필요로 하는 경우에 사용하는게 좋다는 것이다.

한편, Integer.valueOf(s)는 Integer 객체로 정수 값을 얻을 때 사용될 수 있있다.
객체를 사용해야 하는 특정 상황에서 Integer 자료형을 사용하는 경우에 유용한데,
예를 들어 List와 같은 컬렉션에 값을 추가하거나 Integer 형식을 요구하는 다른 메서드에 전달할 때 사용하는게 좋다.

종합적으로, 대부분의 상황에서는 Integer.parseInt(s)를 사용하여 객체가 아닌 기본타입으로 변환하는게 보편적이다.

profile
꼭꼭 씹어서 소화시키는 맛있는 코딩

0개의 댓글