일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- coding test
- stream
- C 언어 코딩 도장
- datastructure
- 메모리구조
- 윤성우 열혈자료구조
- 이것이 자바다
- 이스케이프 문자
- Graph
- 혼자 공부하는 C언어
- R
- 윤성우의 열혈 자료구조
- list 컬렉션
- Stack
- 알기쉬운 알고리즘
- C programming
- insertion sort
- Serialization
- JSON
- Algorithm
- Selection Sorting
- s
- buffer
- Today
- Total
Engineering Note
[Java] char 숫자 문자를 숫자로 변환하기(getNumericValue, 아스키 코드 활용) 본문
[Java] char 숫자 문자를 숫자로 변환하기(getNumericValue, 아스키 코드 활용)
Software Engineer Kim 2025. 6. 19. 08:34문자 연산, 그리고 숫자문자를 숫자로 변환하기
컴퓨터는 내부적으로 0과 1밖에 모른다. 그런데 우리는 숫자보다 일반 문자가 편하다. 숫자를 문자로 변환해야 한다.
char는 16바이트고 int는 32바이트를 저장할 수 있다. char, int 타입은 둘 다 숫자를 저장하는데 char는 ''를 통해 하나의 문자를 담는데 이때 ''에 남긴 문자를 유니코드(문자, 숫자 변환 표로 정해놓은 규칙)에 따라 숫자로 바꾸어서 저장한다.
그리고 char는 숫자처럼 연산할 수 있다. 'A'는 유니코드로 65인데 'A' - 2를 하면 63이 되고 int에 형변환 없이 저장할 수 있다. (=> char + char는 int)
그래서 '2' 숫자 처럼 보이는 '2' 문자를 진짜 2로 변환하려면 '2' - '0'을 해주면 2로 변환할 수 있다.
'0'은 아스키코드로 48이고 '0'다음 부터 '1', '2', '3'에 해당 하는 숫자들은 48에 1, 2, 3 을 더한 49, 50, 51이다. 다시 말해 '1'은 49(48+1), 50(48+2), 51(48+3)이다.
주의할 점은 문자를 직접 붙이고 싶을 때 char + char를 하더라도 숫자가 나오기 때문에 char + "" + char로 명확히 문자열 연산임을 표시해주어야 한다.(""는 빈 문자열 String이다. ''(홑따옴표는)는 문자하나)
String inputNum = "324";
for (int i = 0; i < inputNum.length(); i++) {
System.out.println(inputNum.charAt(i) - '0');
}
이렇게 아스키코드와 char의 특성을 이용해서도 문자를 숫자로 변환할 수도 있고 Character 클래스의 getNumericValue()메서드를 이용하면 숫자로 변환할 수 있다. getNumericValue의 함수 선언부, Method Signature int getNumericValue(char c)이다.
예를 들면 아래처럼 String에 저장된 숫자를 char[](char 배열)로 만들고 getNumericValue() 메서드를 이용하면 숫자를 출력할 수 있다.
String s = "324";
for(char c : s.toCharArray(){
int num = Character.getNumericValue(c);
System.out.println(num);
}
문자를 아스키 코드로 변환하기
그렇다면 이걸 이용하면 문자를 아스키코드로도 변환할 수 있다. char 는 내부적으로 숫자이기 때문에 연산이 가능하다. 사실 모든 타입은 내부적으로 숫자지만 직접적으로 숫자 연산이 가능한 숫자를 의미한다. 그렇다면 여기에 0을 더하면 그대로 아스키코드일 것이고, 숫자 연산을 했기 때문에 이제는 타입이 int 타입이다. 이 점을 이용하면 문자에 대당하는 아스키코드를 출력할 수 있다.
String input = "A";
System.out.println(input.charAt(0) + 0);
cf)
String 은 내부적으로 char 배열로 이루어져 있다. char charAt(int index)를 이용하면 인덱스를 통해 각 문자를 접근할 수 있다.
'Programming Language > Java' 카테고리의 다른 글
[Java] javac 명령어를 사용해서 .java 파일 컴파일 하기 (3) | 2025.06.19 |
---|---|
[Java] public static void main(String[] args)의 의미 (0) | 2025.06.19 |
[Java] 자바의 문자열 공백 제거 및 공백 기준 문자열 나누기 (0) | 2025.06.18 |
[Java] 메모리 사용 영역 (0) | 2025.06.18 |
[Java] String, StringBuilder 그리고 문자열 뒤집기(StringBuilder.reverse()) (1) | 2025.06.17 |