Java를 다루거나, 코딩 테스트를 준비하다 보면 정수형 숫자를 n진수 문자열로 변환해야 하는 일이 종종 있습니다. Java에서는 toBinaryString(), toHexString(), toOctalString()이라는 정수를 n진수 문자열로 변환하는 메서드를 제공합니다.
toBinaryString()란❓
public static String toBinaryString(int i)
toBinaryString() 메서드는 java.lang.Integer 클래스에 포함되어 있으며, 정적(static) 메서드이기 때문에 인스턴스를 생성하지 않고도 클래스 이름(Integer)을 통해 직접 호출할 수 있습니다.
- String: 메서드가 반환하는 값의 타입으로, 2진수 문자열을 반환합니다.
- int i: 메서드가 입력으로 받는 정수형 매개변수입니다.
toBinaryString()의 예제
정수 42를 2진수 문자열로 변환
public class ToBinaryStringExample {
public static void main(String[] args) {
int number = 42;
String binaryString = Integer.toBinaryString(number);
System.out.println("42의 2진수 표현: " + binaryString);
}
}
// 결과 : 42의 2진수 표현: 101010
여러 정수 변환 예제
public class ToBinaryStringExample {
public static void main(String[] args) {
int[] numbers = {0, 1, 2, 5, 16, 255};
for (int number : numbers) {
String binaryString = Integer.toBinaryString(number);
System.out.println(number + "의 2진수 표현: " + binaryString);
}
}
}
결과
0의 2진수 표현: 0
1의 2진수 표현: 1
2의 2진수 표현: 10
5의 2진수 표현: 101
16의 2진수 표현: 10000
255의 2진수 표현: 11111111
위와 같이 toBinaryString() 메서드를 통해 쉽게 정수형 숫자를 2진수 문자열로 변환할 수 있습니다.
문자열에서 특정 문자가 알파벳인지를 판별할 때 활용하면 코드를 더 간결하고 가독성 있게 작성할 수 있습니다.
toHexString() 란❓
public static String toHexString(int i)
toHexString() 메서드는 주어진 정수를 8진수로 변환한 문자열을 반환합니다.
마찬가지로 toHexString() 메서드 역시 java.lang.Integer 클래스에 포함되어 있으며, 정적(static) 메서드이기 때문에 인스턴스를 생성하지 않고도 클래스 이름(Integer)을 통해 직접 호출할 수 있습니다.
toHexString()의 예제
정수 255를 8진수로 변환
int num = 255;
String hexString = Integer.toHexString(num);
System.out.println("Decimal: " + num + ", Hexadecimal: " + hexString);
// 결과 : Decimal: 255, Hexadecimal: ff
정수 -100를 8진수로 변환
int num = 255;
String octalString = Integer.toOctalString(num);
System.out.println("Decimal: " + num + ", Octal: " + octalString);
// 결과: Decimal: 255, Octal: 377
toOctalString() 란❓
int num = 255;
String octalString = Integer.toOctalString(num);
System.out.println("Decimal: " + num + ", Octal: " + octalString);
// 결과: Decimal: 255, Octal: 377
toOctalString() 메서드는 주어진 정수를 16진수로 변환한 문자열을 반환합니다.
마찬가지로 toOctalString() 메서드 역시 java.lang.Integer 클래스에 포함되어 있으며, 정적(static) 메서드이기 때문에 인스턴스를 생성하지 않고도 클래스 이름(Integer)을 통해 직접 호출할 수 있습니다.
toOctalString()의 예제
정수 255를 16진수로 변환
int num = 255;
String octalString = Integer.toOctalString(num);
System.out.println("Decimal: " + num + ", Octal: " + octalString);
// 결과: Decimal: 255, Octal: 377
정수 -100를 16진수로 변환
int num = -100;
String octalString = Integer.toOctalString(num);
System.out.println("Decimal: " + num + ", Octal: " + octalString);
// 결과: Decimal: -100, Octal: 37777777644
toString() 란❓
public static String toString(int i, int radix)
toString() 메서드는 일반적으로 매개변수를 안 주면 숫자를 문자열로 바꿔주는 것으로 알고 있는데 이는 숫자가 정수형이기 때문에 10진수 정수를 문자열로 반환하는 메서드입니다. 이는 Integer.toString(int i)와 동일한 결과를 반환합니다.
따라서 두 번째 매개변수로 변환할 진법을 지정할 수 있습니다. 이렇게 지정한 진법에 따라 숫자를 문자열로 변환합니다.
toString()의 예제
10진수 ➡ 문자열 변환
int num = 123;
String stringValue = Integer.toString(num);
System.out.println(stringValue);
// 결과: 123
10진수 ➡ 2진수 변환
int num = 15;
String binaryValue = Integer.toString(num, 2);
System.out.println(binaryValue);
// 결과: 1111
여기서 두 번째 매개변수인 2는 2진수로 변환하겠다는 것을 나타냅니다. 따라서 결과는 1111이 됩니다.
Integer.toXXXString()과 toString() 차이점⁉
- 1) 진법 변환: toXXXString() 메서드는 정수를 특정 진법으로 변환할 때 사용됩니다.
- 예를 들어, toBinaryString()은 정수를 2진수 문자열로 변환하고, toHexString()은 정수를 16진수 문자열로 변환합니다. 반면에 toString() 메서드는 기본적으로 정수를 10진수 문자열로 변환합니다.
- 2) 유연성: toString() 메서드를 사용하여 숫자를 문자열로 변환할 때는 원하는 진법을 직접 지정할 수 있습니다.
- 반면에 toXXXString() 메서드들은 고정된 진법 변환을 수행하므로 다른 진법으로의 변환이 필요한 경우에는 직접 다른 toXXXString() 메서드를 호출해야 합니다.
간단히 말해, toXXXString() 메서드들은 고정된 진법 변환을 제공하고, toString() 메서드는 유연성을 가지고 있어 원하는 진법으로 변환할 수 있습니다.
parseInt() 란❓
parseInt(String s)
- parseInt(String s): 10진수 문자열을 정수로 변환합니다.
parseInt(String s, int radix)
- parseInt(String s, int radix) :특정 진법(radix)의 문자열을 10진수 정수로 변환합니다. radix는 2(이진법)에서 36진법까지의 값을 가질 수 있습니다.
반대로 10진수 정수를 2진수로 변환하는 방법은 parseInt() 메서드를 사용하면 됩니다.
parseInt() 메서드는 문자열을 정수로 변환하는 데 사용되며, 특정 진법의 문자열을 10진수 정수로 변환할 수 있는 기능을 제공합니다.
parseInt()의 예제
10진수 문자열을 정수로 변환
public class ParseIntExample {
public static void main(String[] args) {
String numberStr = "123";
int number = Integer.parseInt(numberStr);
System.out.println("변환된 정수: " + number);
}
}
// 결과 : 변환된 정수: 123
2진수 문자열을 정수로 변환
public class ParseIntExample {
public static void main(String[] args) {
String binaryStr = "1101";
int number = Integer.parseInt(binaryStr, 2);
System.out.println("2진수 1101의 10진수 표현: " + number);
}
}
// 결과 : 2진수 1101의 10진수 표현: 13
16진수 문자열을 정수로 변환
public class ParseIntExample {
public static void main(String[] args) {
String hexStr = "1A3F";
int number = Integer.parseInt(hexStr, 16);
System.out.println("16진수 1A3F의 10진수 표현: " + number);
}
}
// 결과 : 16진수 1A3F의 10진수 표현: 6719
장점
- 다양한 진법 지원: 2진수부터 36진수까지 다양한 진법의 문자열을 10진수 정수로 변환할 수 있습니다.
- 표준 예외 처리: 변환 중 숫자 형식이 잘못된 경우 NumberFormatException을 던지므로 오류를 쉽게 처리할 수 있습니다.
- 간단하고 사용하기 쉬움: 단순한 메서드 호출로 문자열을 정수로 변환할 수 있어 코드가 간결해집니다.
단점
- 예외 처리 필요: 입력 문자열이 유효하지 않거나 지정된 진법에 맞지 않으면 NumberFormatException이 발생하므로 반드시 예외 처리가 필요합니다.
- 제한된 진법 범위: radix 값은 2에서 36까지만 지원되므로 이 범위를 벗어나는 경우 변환할 수 없습니다.
예외 처리 예제
public class ParseIntExample {
public static void main(String[] args) {
String invalidNumberStr = "123a";
try {
int number = Integer.parseInt(invalidNumberStr);
System.out.println("변환된 정수: " + number);
} catch (NumberFormatException e) {
System.out.println("잘못된 숫자 형식: " + invalidNumberStr);
}
}
}
// 결과 : 잘못된 숫자 형식: 123a
위와 같이 parseInt 메서드는 문자열을 정수로 변환할 때 매우 유용합니다. 특히 다양한 진법의 문자열을 처리할 수 있어, 여러 상황에서 활용될 수 있습니다. 예외 처리를 적절히 하면 더욱 안정적으로 사용할 수 있습니다.
'Language > Java' 카테고리의 다른 글
[JAVA] 좌표와 2차원 배열 매핑의 이해 (좌표 ➡️ 배열) (0) | 2024.07.01 |
---|---|
[Java] copyOf(), arraycopy(), copyOfRange() 메서드 알아보기 ✔ (배열 복사 메서드) (0) | 2024.06.16 |
[JAVA] Character.isLetter() & Character.isDigit() 메서드 알아보기 (1) | 2024.06.04 |
[JAVA] 더블 콜론 연산자 :: 알아보기 (메서드 참조 사용 방법과 예제) (0) | 2024.06.02 |
[Java] toCharArray() 메소드 알아보기 (문자열 ➡️ char배열) (1) | 2024.06.02 |