가장 기본적인 개념은 두 메서드는 형 변환을 도와주는 메서드이다.
Integer.valueOf()는 입력받은 문자열을 참조형 타입인 Wrapper객체 Interger로 return해주고
Integer number =Integer.valueOf("ABC",16)
Integer.parseInt()는 기본형 타입인 일반 변수 int로 return해준다.
int number Integer.parseInt("ABC",16)
두 메서드의 더 자세한 차이점을 알아보려고 메서드가 들어있는 interface를 열어봤더니 매개변수로 넘어가는 당연히 한개 인줄 알았던 Parameter가 두 개여서 두 번째 Parameter인 radix가 무슨 역할인지 너무 궁금해졌다.
매개변수 이름은 radix로 되어있어서 index역할인가? 헷갈렸었지만, "진수"라는 의미를 가지고 있는 것이었다. 한국말로는 2진수, 8진수, 16진수와 같은 개념이다. 0부터 숫자를 하나씩 세서 올림 수가 생길 때까지 세려면 몇번째 까지 세야하는지의 의미이다.
영어권에선 진수들을 뜻하는 각각의 명사가 있어서 Parameter이름을 radix로 한 것 같다.
ex) 8진수 -> Octal, 16진수 -> hexadecimal...
Integer.valueOf("ABC",16), Integer.parseInt("ABC",16)
내가 지금 매개변수로 넘긴 "ABC"가 잘못된 문자열이아니라 16진수니까 Exception 리턴하지말고 10진수 Integer, int 형으로 바꿔줘 라는 의미를 가지게된다.
*p.s Integer.valueOf()는 Warraper객체로 감싸는 역할만하고 매개변수의 문자열을 parseInt로 넘겨서 리턴된 int값을 이용한다. 어차피 int형으로 변환하는게 목표라면 해당 숫자를 직접 사용해야해서 변환하는 경우가 대부분 일테니까 ParseInt로 변환하는것이 조금 더 유리하다.