자바 part.1 문제풀이 - length(),String.valueOf(),Integer.valueOf()
정수형(int)을 문자열(String)로 변환하여 정수의 자릿수를 구하는 코드를 구현해보시오.
이 문제는 정수형 문자열로 문자열을 정수형로 변환하는 방법에 대해서 아는지 묻는 문제이다.
public class type_IntString {
public static void main(String[] args) {
//[1] : 정수 선언
int a = 12345;
String str = "12345";
// System.out.println(a.length()); // 정수형 이므로 Error
System.out.println("문자열 str 문자 개수: " + str.length()); // 5
//[2] : 정수 -> 문자열로 변환 -> 자릿수 구하기
String stra = String.valueOf(a);
System.out.println("정수 -> 문자열 stra 문자 개수 : " + stra.length());
//[3] : 문자열 + 정수형 = ?
System.out.println("정수형 : " + (12345 + 1));
System.out.println("문자열 : " + (str + 1));
//[4] : 문자열 -> 정수로 변환
int b = Integer.valueOf(str);
System.out.println("문자열 -> 정수 : " + (b + 1));
}
}
* length() - 문자열 길이를 반환하는 메서드
* String.valueOf(),Integer.toString() - 기본 데이터 타입 값을 문자열로 변환하는 메서드
* Integer.valueOf() - 정수 값을 문자열로 변환하는 메서드
[ ! ] : 정수형을 문자열로 변환하는 이유
- 문자열 연결 : 정수를 문자열로 변환하면 문자열과 다른 문자열을 연결하여 새로운 문자열을 생성할 수 있다. 문자열 연결은 출력 메시지 생성, 파일 작성, 네트워크 통신 등 다양한 상황에서 필요한 작업이다.
- 사용자 인터페이스 : 정수 값을 문자열로 변환하여 사용자에게 보여줄때 편리하다. 예를 들어, 계산기 애플리케이션에서 계산 결과를 문자열로 표시하거나,게임에서 점수를 문자열로 표시할 수 있다.
- 데이터 저장 및 전송 : 데이터를 파일에 저장하거나 네트워크를 통해 전송해야 할 때, 정수를 문자열로 변환하여 전송하거나 저장할 수 있다. 대부분의 데이터형식은 문자열로 표현될수 있으므로, 데이터를 문자열로 변환하여 다른 프로그램이나 시스템에서도 쉽게 이해하고 사용할 수 있다.
- 형식 지정 : 정수 값을 특정 형식에 맞추어 문자열로 표시해야 할 때가 있다. 예를 들어, 통화를 표시할 때는 정수를 통화 단위와 함께 문자열로 변환해야 한다. 이러한 형식 지정은 데이터의 가독성과 일관성을 높여준다.
자바에서는 ' Integer.toString() ' 메서드나 ' String.valueOf() ' 메서드를 사용하여 정수를 문자열로 변환할 수 있다. 또한, ' String.format() ' 메서드를 사용하여 형식화된 문자열을 생성할 수 도 있다. 반대로 Integer.valueOf()을 통해서 문자열을 정수로 변환할 수 있다.
length()
자바에서 'length'는 문자열과 배열객체에서 사용되는 메서드이다.
- 문자열의 'length()' : 문자열 객체에 대해 호출되는 'length()' 메서드는 해당 문자열의 길이를 반환한다. 이 메서드는 문자열의 길이를 확인하거나 반복문에서 문자열을 탐색할때 사용된다.
String str = "Hello, world!";
int length = str.length(); // length에는 13이 저장됨
- 배열의 'length' : 배열 객체에서 사용되는 'length' 속성은 해당 배열의 길이를 나타낸다. 이 속성은 배열이 포함하는 요소의 수를 반환한다. 배열의 크기는 생성될 때 결정되며, 크기를 변경할 수 없다.
int[] numbers = {1, 2, 3, 4, 5};
int length = numbers.length; // length에는 5가 저장됨
주의할 점은 'length()' 메서드와 'length' 속성의 차이점이다. 'length()' 메서드는 문자열 객체에 대해 호출되며, 메서드 형태를 가지고 있으며, 'length' 속성은 배열 객체에 직접 접근할 수 있는 속성 형태를 가지고 있다.
String.valueOf()
자바에서 기본값 데이터 타입 값을 문자열로 변환하는 메서드이다. 이 메서드는 주어진 값의 문자열 표현을 반환한다. 'String.valueOf()' 는 오버로딩된 형태로 다양한 데이터 타입을 처리할 수 있다.
String str = String.valueOf(value);
여기서 'value'는 문자열로 변환할 값 이다. 'value'는 기본 데이터 타입인 'int' , 'float', 'double' , 'boolean' 등이 될 수 있으며, 객체 타입인 'Object'도 처리할 수 있다.
int number = 42;
String str = String.valueOf(number); // str에는 "42"라는 문자열이 저장됨
double value = 3.14;
String str2 = String.valueOf(value); // str2에는 "3.14"라는 문자열이 저장됨
boolean flag = true;
String str3 = String.valueOf(flag); // str3에는 "true"라는 문자열이 저장됨
또한 'String.valueOf()'메서드는 문자열로 변환해야 할 값이 'null'인 경우에도 "null" 이라는 문자열로 반환할수 있다.
Object obj = null;
String str4 = String.valueOf(obj); // str4에는 "null"이라는 문자열이 저장됨
'String.valueOf()' 는 문자열로 변환해야 할 값이 이미 문자열인 경우에도 그대로 반환한다. 따라서 값이 이미 문자열인지 확인 하지 않고 항상 문자열로 변환된다.
Integer.valueOf()
자바에서 문자열을 정수로 변환하는 메서드이다. 이 메서드는 주어진 문자열을 해당하는 정수 값으로 변환하여 반환한다.
int value = Integer.valueOf(str);
여기서 'str'은 정수로 변환할 문자열이다. 반환되는 값은 문자열이 표현하는 정수 값이다.
String str = "42";
int number = Integer.valueOf(str); // number에는 42라는 정수가 저장됨
주의할 점은 'integer.valueOf()' 메서드는 문자열이 유효한 정수 표현인지 확인하지 않고 변환을 시도한다. 따라서 유효하지 않는 문자열이 주어지면 'NumberFormatException' 발생할 수 있다.
String str = "abc";
int number = Integer.valueOf(str); // NumberFormatException이 발생함
'integer.valueOf()' 메서드는 문자열을 10진수로 해석한다. 그러나
오버로딩된 형태로, 다른 진법의 문자열을 해당 진법으로 해석하여 정수로 변환할 수 도 있다. 예를 들어, 2진수, 8진수, 16진수의 문자열을 해당 진법을 해석하여 정수로 변환할 수 있다.
String binary = "101010";
int number1 = Integer.valueOf(binary, 2); // 2진수로 해석하여 42로 변환
String octal = "52";
int number2 = Integer.valueOf(octal, 8); // 8진수로 해석하여 42로 변환
String hex = "2A";
int number3 = Integer.valueOf(hex, 16); // 16진수로 해석하여 42로 변환
String.valueOf() 와 integer.toString() 차이
'string.valueOf()' 와 'integer.toString()'은 문자열로 변환 몬적이 동일하지만, 일부 차이점이 있다.
1. 반환타입
- 'string;valueOf()' : 항상 문자열('String') 을 반환한다.
- 'Integer.toString()' : 정수를 문자열로 변환하므로, 반환 타입은 기본적으로 문자열('String')이다. 그러나 오버로딩된 형태에서는 'int' 대신 'Integer' 타입을 사용할 수 있으며, 이 경우 반환 타입 'Integer' 이다.
2. 처리 가능한 인자
- 'string;valueOf()' : 모든 데이터 타입을 처리할 수 있으며, 기본 데이터 타입인 정수, 실수, 불리언, 문자 등과 객체 타입 모두를 문자열로 변환할 수 있다.
- 'Integer.toString()' : 오직 정수 타입('int' 또는 'integer')만을 처리할 수 있으며, 다른 데이터 타입은 직접 변환하여 사용해야 한다.
3. Null 처리
- 'string;valueOf()' : 인자로 'null' 이 주어지면 "null" 문자열을 그대로 반환한다.
- 'Integer.toString()' : 'null' 값을 직접 처리하지 않으며, 'NullPointerException' 이 발생한다. 따라서 'Integer' 객체가 'null'인 경우에는 'toString()'을 호출할 수 없다.
4. 사용방식
- 'string;valueOf()' : 다양한 데이터타입을 문자열로 변환할 수 있는 범용적인 메서드이다. 'string;valueOf()'를 사용하여 문자열로 변환할 값의 타입에 상관없이 일관된 방식으로 문자열로 변환할 수 있다.
- 'Integer.toString()' : 정수 값을 문자열로 변환하는 특정한 메서드이다. 주로 정수값에 대한 변환 작업에 사용된다. 그러나 오버로딩된 형태에서 다른 진법으로의 변환도 가능하다.
요악하자면 'string;valueOf()' 는 다양한 데이터 타입을 문자열로 변환하는 메서드이며, 'Integer.toString()'은 정수 값을 문자열로 변환하는 특정한 메서드이다.