728x90
parse 메서드
: 문자열을 다양한 타입으로 변환하는 메서드
- Integer.parseInt(String s):
- 문자열을 정수로 변환합니다.
- 예를 들어, "123" 문자열은 123 정수로 변환됩니다.
- 변환 중에 문자열이 올바른 숫자 형식이 아니라면 NumberFormatException이 발생합니다.
- Double.parseDouble(String s):
- 문자열을 배정밀도 부동 소수점 숫자로 변환합니다.
- 예를 들어, "3.14" 문자열은 3.14 배정밀도 부동 소수점 숫자로 변환됩니다.
- 변환 중에 문자열이 올바른 숫자 형식이 아니라면 NumberFormatException이 발생합니다.
- Boolean.parseBoolean(String s):
- 문자열을 논리값으로 변환합니다.
- 대소문자를 구분하지 않고, "true" 문자열은 true로, 그 외의 문자열은 false로 변환됩니다.
- Long.parseLong(String s):
- 문자열을 long 타입으로 변환합니다.
- 예를 들어, "123456789" 문자열은 123456789L long 값으로 변환됩니다.
- Float.parseFloat(String s):
- 문자열을 단정밀도 부동 소수점 숫자로 변환합니다.
- 예를 들어, "2.71828" 문자열은 2.71828f 단정밀도 부동 소수점 숫자로 변환됩니다.
Interger.parseInt(String s)와 Integer.valueOf(String s)의 차이
- 반환 값의 타입:
- parseInt: int를 반환합니다. 즉, 정수 값을 반환합니다.
- valueOf: Integer 객체를 반환합니다. 즉, 정수 값을 감싼 래퍼 클래스 객체를 반환합니다.
- Caching (캐싱):
- valueOf는 일정 범위의 값들에 대해서는 내부적으로 캐싱을 사용합니다. 따라서 같은 값에 대해 여러 번 호출되어도 같은 객체를 반환하므로, 메모리 절약 효과가 있을 수 있습니다.
- parseInt는 캐싱을 사용하지 않고 매번 새로운 int 값을 생성합니다.
- null 처리:
- parseInt: null 문자열이나 숫자 형식이 아닌 문자열을 변환하려고 하면 NumberFormatException이 발생합니다.
- valueOf: null 문자열이나 숫자 형식이 아닌 문자열을 변환하려고 하면 NumberFormatException 대신 NullPointerException이 발생합니다.
- 사용 목적:
- parseInt는 주로 기본 int 타입의 값이 필요한 상황에서 사용됩니다.
- valueOf는 객체 지향적인 처리가 필요한 경우에 사용됩니다. 예를 들어, 제네릭 컬렉션에 저장하거나 메서드의 인자로 전달할 때 유용합니다.
- 예외 처리:
- parseInt는 변환할 수 없는 문자열이 들어오면 NumberFormatException 예외가 발생합니다.
- valueOf는 변환할 수 없는 문자열이 들어오면 NumberFormatException 예외 대신 NumberFormatException를 상속받은 IllegalArgumentException 예외가 발생합니다.
요약하면, parseInt는 간단하게 정수 값을 얻을 때 사용하며, valueOf는 좀 더 객체 지향적인 처리나 특정 상황에서의 캐싱 효과를 고려할 때 사용될 수 있습니다.
문자열 변환 메서드들의 차이점
toString() / parseInt() / valueOf()
- toString() 메서드:
- toString() 메서드는 자바의 모든 클래스가 상속하는 Object 클래스에 정의된 메서드입니다.
- 이 메서드는 객체를 문자열로 표현하는 역할을 합니다. 객체의 내용이나 속성을 텍스트로 변환하여 반환합니다.
- 객체의 내부 정보를 확인하거나, 디버깅, 로깅, 출력 등의 목적으로 사용됩니다.
- 클래스의 개발자가 toString() 메서드를 오버라이딩하여 객체의 표현 방식을 정의할 수 있습니다.
- 대부분의 자바 내장 클래스들은 toString()을 오버라이딩하여 읽기 좋은 형태로 객체를 표현합니다.
- parseInt() 메서드:
- parseInt() 메서드는 정적 메서드로서 Integer 클래스에서 제공하는 메서드 중 하나입니다.
- 문자열을 파싱하여 해당 문자열을 정수로 변환합니다.
- 파라미터로 문자열을 받아들이고, 해당 문자열을 정수로 변환한 값을 반환합니다.
- 변환 중에 문자열이 숫자 형식이 아니라면 NumberFormatException 예외가 발생합니다.
- valueOf() 메서드:
- valueOf() 메서드는 정적 메서드로서 여러 클래스에서 제공하는 메서드 중 하나입니다.
- 주로 기본 타입 값을 래퍼 클래스 객체로 변환하는 역할을 합니다. (Integer, Double, Boolean 등)
- 파라미터로 문자열을 받아들이고, 해당 문자열을 기본 타입의 값으로 변환한 후, 해당 값을 래퍼 클래스 객체로 감싸서 반환합니다.
- 변환 중에 문자열이 숫자 형식이 아니라면 NumberFormatException 예외가 발생합니다.
[ 비교 예제 ]
// toString() 예시
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
public static void main(String[] args) {
Person person = new Person("John", 30);
System.out.println(person.toString()); // 출력: Person{name='John', age=30}
}
}
// parseInt() 예시
public class ParseExample {
public static void main(String[] args) {
String numStr = "123";
int parsedInt = Integer.parseInt(numStr);
System.out.println(parsedInt); // 출력: 123
}
}
// valueOf() 예시
public class ValueOfExample {
public static void main(String[] args) {
String numStr = "456";
Integer valueOfInt = Integer.valueOf(numStr);
System.out.println(valueOfInt); // 출력: 456
}
}
728x90
'Java' 카테고리의 다른 글
Java | 클래스와 객체의 차이? - 인스턴스 관점 (0) | 2023.11.13 |
---|---|
Java | Java 에서 배열을 복사하는 메서드 (0) | 2023.09.15 |
Java | 논리 연산자 ( || , && ) 과 ( | , & ) 의 차이 (0) | 2023.07.31 |
Java | toggle 간단 예시 (0) | 2023.07.18 |
Java | Integer.valueOf() - Integer 객체로 변환 (0) | 2023.07.17 |