문제: https://school.programmers.co.kr/learn/courses/30/lessons/12954
class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
for (int i = 0; i < n; i++) {
answer[i] = (long) x * (i + 1);
}
return answer;
}
}
처음 이 문제를 풀었을때는 오답으로 나왔는데 그 이유는 타입변환에 있었다.
x 자체가 int이기 때문에 long 타입으로 변환해주지 않으면 부분 에러가 발생하게 된다.
그렇지 않으면 큰 수에서 오버플로우가 발생할 수 있다.
valueOf 메서드는 Java에서 기본 데이터 타입을 해당하는 래퍼 클래스의 객체로 변환하는 데 사용되는 정적 메서드다.
이 메서드는 기본 데이터 타입을 객체로 변환하는 과정, 즉 오토박싱(autoboxing)에 유용하다.
int number = 10;
Integer integerValue = Integer.valueOf(number);
이러한 방법으로 문제를 해결하면서 각 메서드와 클래스의 특성을 이해하고, 상황에 맞는 최적의 해결책을 찾는 데 도움이 되었습니다.
int number = 10;
Integer integerValue = Integer.valueOf(number);
int
-> Integer
객체로 변환
Integer integerValue = Integer.valueOf("123");
문자열 "123"
-> Integer
객체로 변환
valueOf
메서드는 자동으로 형변환을 수행하지 않는다.Double.valueOf(3)
는 오류를 발생시킬 수 있기 때문에 Double.valueOf(3.0)
과 같이 실수 리터럴을 사용하는 것을 주의하자.