문자열 접합(+): String.valueOf(a) + String.valueOf(b)라고 써도 되지만,
int ba = Integer.parseInt("" + b + a); 처럼 빈 문자열을 앞에 두면 자바가 알아서 뒤의 숫자들을 문자열로 취급해 붙여준다. (이때 a,b는 int형이고 “”를 통해 문자열로 취급한다.)
public static int solution(int a, int b) {
int ab = Integer.parseInt("" + a + b);
int ba = Integer.parseInt("" + b + a);
return (ab >= ba) ? ab : ba;
}
Math.max(): 삼항 연산자 (a > b) ? a : b 대신 자바 표준 라이브러리인 Math.max(ab, ba)를 쓰면 코드가 훨씬 더 직관적이게 된다.
public int solution(int a, int b) {
String strA = String.valueOf(a);
String strB = String.valueOf(b);
String strSum1 = strA + strB;
String strSum2 = strB + strA;
return Math.max(Integer.valueOf(strSum1), Integer.valueOf(strSum2));
}
public int solution(int a, int b) {
int ab = Integer.parseInt(Integer.toString(a) + Integer.toString(b));
int ba = Integer.parseInt(Integer.toString(b) + Integer.toString(a));
return ab >= ba ? ab : ba;
}
String.valueOf(a) vs Integer.toString(a)둘 다 숫자를 문자열로 바꾸는 역할이지만 내부적인 작동 방식에 약간의 차이 존재
String.valueOf(a): 내부적으로 Integer.toString(a)을 호출합니다. 즉, Integer.toString을 한 번 더 감싸놓은 형태로 만약 입력값이 null이라면 "null"이라는 문자열을 반환하는 안전장치가 존재Integer.toString(a): 정수(int)를 직접 문자열로 변환하는 가장 직접적인 메서드숫자를 문자로: "" + a 또는 String.valueOf(a)
Integer.valueOf() vs Integer.parseInt()이 둘도 비슷하지만 반환하는 타입이 다릅니다.
Integer.parseInt(s): 결과값으로 기본형(int)을 반환 (산술 연산에 최적화)Integer.valueOf(s): 결과값으로 객체형(Integer)을 반환합니다.그럼 왜
parseInt대신valueOf를 써도 돌아가나요?
자바에는 Auto-boxing/Unboxing이라는 기능이 있어서, 객체(Integer)를 숫자(int)가 필요한 곳에 넣으면 자바가 알아서 꺼내서 사용한다. 하지만 단순히 숫자 비교나 연산을 위해서라면 메모리 효율상parseInt를 쓰는 것이 정석이다.
Integer. 이나 String.을 앞에 붙여야 하는 이유자바는 모든 메서드가 특정 클래스 안에 소속되어 있어야 합니다. 이때 'Static 메서드(정적 메서드)'라는 개념이 등장합니다.
Integer라는 클래스는 "정수와 관련된 유용한 도구들의 집합소"공구함.꺼내기(망치) 하듯이, 문자열을 숫자로 바꾸는 도구가 Integer라는 공구함 안에 들어있기 때문에 Integer.parseInt()라고 부르는 것입니다.String 공구함에 들어있어 String.valueOf()라고 씁니다.Integer vs int (대문자와 소문자의 차이)int (기본형, Primitive Type): 단순히 숫자 값만 저장int a = 10; 처럼 쓰며, 별도의 기능(메서드)이 없습니다. (a.parseInt() 이런 게 안됨.)Integer (래퍼 클래스, Wrapper Class):int를 객체로 감싸서 다양한 기능(메서드)을 제공int가 아니라 대문자 Integer 클래스가 가지고 있는 것입니다.valueOf(a) 를 쓰면 Integer.toString(a)을 호출해 a의 값이 null(즉 아무값도 없으면) 이를 String.valueof(a)라 하면 “null”로 출력된다. 아래 표 참조!!| 케이스 | 상태 | String.valueOf(a) 결과 |
|---|---|---|
| 참조조차 안 됨 | String a = null; | "null" (글자 그대로 출력) |
| 빈 문자열 입력 | String a = ""; | "" (눈에 보이지 않는 빈 공간 출력) |
valueOf는 특정 타입 전용이 아니라, 그 클래스의 타입으로 변환하겠다는 뜻