자바에서 데이터의 형을 명시적으로 변환하는 방법은 크게 두 가지가 있다.
자바의 형변환 연산자 (type)을 사용하는 방법과, 내장된 객체 클래스의 메소드를 사용하는 방법.
문득 문자열의 정수형 변환을 위해 형변환 연산자를 사용하다가 (int)"String"
은 불가능하며 반드시
Integer.parseInt() 혹은 Integer.valueOf() 메소드를 사용해야 한다는 점을 알았다.
그렇다면 형변환 연산자를 사용하는 것과 메소드를 사용하여 변환하는 것에는 어떤 차이가 있을까?
(type) 형변환 연산자와 Integer.parseInt() 메소드의 차이
- 형변환 연산자는 서로 상속관계에 있는 객체 사이에서 형변환이 가능하다.
- 기본 자료형끼리의 형변환은 (
boolean
을 제외하고) 이미 내부적으로 선언되어있기에 사용 가능하다 - String클래스는 참조 자료형으로 값을 저장하고 있는 자료형이 아닌 객체의 주소를 포함하는 형이므로 (type)을 사용하여 기본자료형으로 형변환이 불가능하다.
- 정수형 뿐만 아니라
char
등 다른 타입으로 형변환 할때에도 마찬가지이다.String.charAt(i)
메소드를 사용하여 변환해야 한다.
문자열은 기본 자료형이 아닌 참조형으로 (type)연산자로 형변환 할 수 있도록 선언되어 있지 않으며,
문자열을 정수형으로 변환하기 위해서는 Integer클래스의 parseInt()
와 vauleOf()
두가지 메소드를 사용해야한다.
그렇다면 문자열을 정수로 변환할 수 있는 parseInt()
와 valueOf()
두가지 메소드는 어떤 차이가 있을까?
Integer.parseInt()와 Integer.valueOf()의 차이
- 간단하게 말해, parseInt()는 기본 자료형인
int
로 변환하고, valueOf()는 참조 자료형(Reference Type)인Integer
객체로 변환한다.
즉, 결과를 기본 자료형으로 받고 싶을 때는 parseInt()
를 참조 자료형 Integer
객체로 받고 싶을 때는 valueOf()
를 사용한다.
이런 차이가 있음에도 불구하고 두 메소드를 간단하게는 문자열을 정수형으로 변환해준다고 이해해도 큰 문제없이 사용할 수 있다.
Java의 Autoboxing and Unboxing를 통해 integer객체를 int형 변수에 할당하더라도 자동으로 형변환을 해주기 때문이다.
'WEB > Java' 카테고리의 다른 글
자바 EOF 처리하기 (0) | 2023.04.20 |
---|---|
추상클래스와 인터페이스의 차이 (0) | 2023.04.19 |
toString()과 String.valueof()의 차이 (0) | 2023.04.04 |
BufferedReader/BufferedWriter 와 Scanner/System.out.print()와의 차이 (2) | 2023.03.20 |