2024. 4. 15. 21:19ㆍjava
1. charAt란?
String 타입의 데이터(문자열)에서 i번째 문자를 char 타입으로 변환할 때 사용하는 메소드
"HELLO" 라는 문자열을 입력받았다고 할 때,
Scanner sc = new Scanner(System.in); // HELLO 입력
String str = sc.next(); // 입력된 문자열 str에 저장
System.out.println(str.charAt(1));// HELLO 중 1번째 문자 출력 -> E
System.out.println(str.charAt(3));// HELLO 중 1번째 문자 출력 -> L
2.charAt의 또 다른 활용법
Scanner sc = new Scanner(System.in);
int num = sc.nextInt(); // 입력 받은 값 중 한 가지를 num으로 지정해서 받음
String num2 = sc.next();//입력 받은 값 중 나머지 한가지를 num2로 지정 받음
System.out.println(num * (num2.charAt(1)));
System.out.println(num * (num2.charAt(1) - '0'));
위의 코드는 num과 num2의 값을 입력받아서 곱하기를 하는 코드입니다.
num은 자료형이 int입니다.
그렇기 때문에 2를 입력하면,
2로 인식합니다.
하지만,
num2는 String이기 때문에,
2를 입력하면, 2로 인식하지 못하고, 50으로 인식합니다.
그 이유는 아스키 코드 때문입니다.
※아스키 코드란?※
아스키 코드는 ASCII (American Standard Code for Information Interchange) 미국 표준 협회에서 제정한 문자 표현 방식입니다.
이것을 쓰는 이유는,
컴퓨터는 0과 1로 데이터를 저장하고 표현합니다.
예를 들어,
65같은 숫자를 0과 1로 표현하면,
01000001이 됩니다.
이렇게 컴퓨터는 데이터를 저장합니다.
그래서 아스키 코드를 정리한 아래 표를 보시면,
65의 아스키 코드에 해당하는 데이터는 A가 됩니다.
즉, 50에 해당하는 데이터는 2가 됩니다.
그래서,
charAt(1) - '0'이라는 코드의 역할은..
원래 입력 받은 데이터로 되돌려놓기 위해서 입니다.
그 근거로,
아스키 코드에서 50은 2고, 48은 0입니다.
그래서, 컴퓨터에서는 50-48로 인식해서, 원래 입력한 데이터인 2로 인식하게 되는 것입니다.
'java' 카테고리의 다른 글
StringBuilder란? (0) | 2024.04.20 |
---|---|
java Math 클래스 (0) | 2024.04.19 |
BufferReader와 Scanner의 차이 (0) | 2024.04.18 |
(Java) next() 시리즈 (0) | 2024.04.15 |
(java) int 와 Integer의 차이 (0) | 2024.04.15 |