[JAVA] parse, valueOf

park9910·2022년 4월 2일
0

간단하지만 정리를 안해두고 지나가면 나중에 헷갈릴 것 같아서 사실 방금도 헷갈린 parse, valueOf(Of 류 메소드) 를 정리하고자 한다.

parse

컴파일러에서 사용되는 parse 를 어원으로 하는 듯 하다.
기본적으로 문자열을 해석하는 역할을 수행한다고 예측이 가능하다.

실제로 문자열을 해당 객체의 primitive type 으로 반환하는 parse### 메소드는 Integer.parseInt(String str) 과 같은 방식으로 사용할 수 있다.

valueOf

String 을 해당 객체 인스턴스를 반납해준다는 점에서 parse### 과 크게 다르지 않구나 라고 생각할 수 있는 메소드

하지만 여러 메소드를 사용하다보니 Of 라는 키워드(?) 는 객체 를 생성하는 것에 초점이 맞춰져 있는 것 같다는 생각이 든다.

List.of PageRequest.of 과 같은 메소드는 요구되는 파라미터를 바탕으로 해당 객체의 인스턴스를 반환한다

Integer.valueOf 는 파라미터로 해당 객체와 동일선상에 있는 primitive type 과 String 을 받아서 객체 인스턴스를 반환한다.

String 을 파라미터로 받는 메소드는 결국 내부적으로는 parseInt 를 사용한다.

한가지 메소드 내부를 보면서 흥미로웠던 점은 Integer 객체 같은 경우에는 내부적으로 IntegerCache 를 가지고 있다. 아마 임의의 서비스에서 자주 쓰이는 객체이기도 하니 동일한 값에 대해서는 캐시에 저장해뒀다고 반환하는 것이 유리하다고 판단을 한 것 같다.

모든 Integer 를 캐싱하고 있진 않고, -128 ~ 127 (1바이트) 범위 내에서는 캐싱을 보장하고 외부에서 따로 범위를 바꿔줄 수 있는 것으로 보인다.

profile
https://ppaksang.tistory.com/ 옮겼습니다 !!

0개의 댓글