2 분 소요

String ▶ Int

Integer.parseInt()

오라클 공식 문서에 나와있는 parseInt()은 아래와 같다.

  • 클래스 : java.lang.Integer
  • 리턴 타입 : static int
    • 타입이 static 이므로 인스턴스 객체를 생성하지 않고 바로 사용할 수 있다.
  • 메소드 : parseInt(String s)
  • 설명 : 문자열 인수를 부호 있는 10진수 정수로 변환한다.
String numStr = "16";
int num = Integer.parseInt(numStr);

paseInt()를 두번째 매개변수 없이 사용하면 자동으로 10진수 정수로 변환된다.


하지만, 두번째 매개변수를 사용하면 원하는 진법으로도 변환이 가능하다.

String numStr = "16";
int num = Integer.parseInt(numStr, 16); // numStr을 16진법으로 변환


java.lang.NumberFormatException

그렇다면, String형 변수에 숫자가 아닌 값을 저장한 채 형변환을 하면 어떻게 될까?

String numStr = "16A";
int num = Integer.parseInt(numStr);


image

이런 끔찍한 에러가 난다.


여기서 NumberFormatException 은 숫자 형식에 오류가 있다는 뜻이다.

문자열을 숫자로 바꾸는데 있어 문제가 발생했다는 것인데,

문자열에 숫자가 아닌 값이 포함되어 있기 때문에 유효하지 않는 값으로 예외가 발생했다는 것이다.



Integer.valueOf()

오라클 공식 문서에 나와있는 valueOf()은 아래와 같다.

  • 클래스 : java.lang.Integer
  • 리턴 타입 : static Integer
    • 타입이 static 이므로 인스턴스 객체를 생성하지 않고 바로 사용할 수 있다.
  • 메소드 : valueOf​(String s)
  • 설명 : 지정된 String 값을 보유하는 Integer 객체를 반환한다.
String numStr = "30";
int num = Integer.valueOf(numStr);

Integer.valueOf()의 리턴값은 int형이 아닌 Integer객체 이다.


int와 Integer의 차이는 무엇일까?

int는 값이 저장될 공간의 크기와 저장 형식을 정의한 자료형 중 기본형이고,

Integer는 기본형을 객체로 다루기 위해 사용하는 래퍼 클래스이다.


이는 다음에 제대로 다뤄보기로 하고 valueOf()의 리턴타입이 Integer 인것만 기억해두자.



new Integer(Integer.parseInt())

공식 문서를 보면 Integer.valueOf()를 표현할 수 있는 또 다른 방법을 소개한다.

In other words, this method returns an Integer object equal to the value of:
    new Integer(Integer.parseInt(String s))


아래와 같이 사용할 수 있다는 것이다.

String numStr = "60";
int num = new Integer(Integer.paseInt(numStr));




Int ▶ String

Integer.toString()

오라클 공식 문서에 나와있는 toString()은 아래와 같다.

  • 클래스 : java.lang.Integer
  • 리턴 타입 : static String
    • 타입이 static 이므로 인스턴스 객체를 생성하지 않고 바로 사용할 수 있다.
  • 메소드 : toString(int i)
  • 설명 : 지정된 정수를 나타내는 String 객체를 반환한다.
int num = 814;
String numStr = Integer.toString(num);


문서를 보면, toString​(int i, int radix) 를 통해 변수를 원하는 진법으로도 변환이 가능하다.

String numStr = Integer.toString(num, 16);
// num을 16진법으로 변환



String.valueOf()

오라클 공식 문서에 나와있는 valueOf()은 아래와 같다.

  • 클래스 : java.lang.String
  • 리턴 타입 : static String
    • 타입이 static 이므로 인스턴스 객체를 생성하지 않고 바로 사용할 수 있다.
  • 메소드 : valueOf​(int i)
  • 설명 : char형 인수의 문자열 표현을 반환한다.
int num = 63
String newStr = String.valueOf(num);


오라클 공식 문서를 살펴보면, valueOf() 메소드에 여러가지 매개변수가 존재한다.

boolean, 배열, double, float, char 등


이는 int 뿐만 아니라 다른 타입도 String 타입으로 변환 할 수 있음을 뜻한다.

댓글남기기