JAVA

[java] charAt()이란? - 개발자 배찌

개발자 배찌 2021. 6. 20. 10:27
728x90

1. charAt()이란?

기본형 변수인 char는 단 한 글자만 저장할 수 있는 변수인데
Scanner로 입력을 받을 때는 String 타입으로 밖에 받을 수 없는 것이다.
그래서 등장한 것이 바로 charAt()이라는 녀석이다.
이 녀석은 String으로 저장된 문자열 중에서 한 글자만 선택해서
char타입으로 변환해주는 녀석이다.
이 녀석이 존재하고 있기 때문에 우리는 Scanner를 쓰면서도 char타입을 사용할 수 있는 것이다.

2. charAt()의 형태

예시1)
String str = new String();
str = "안녕하세요";

이러한 예시를 만들어 봤다.
String타입의 참조변수 str에 "안녕하세요"라는 문자열을 저장했다.
여기에서 str을 char타입으로 변환하는 과정을 적어보자면

str.charAt();

이라고 참조변수 뒤에 . 을 찍고 charAt()을 적어주면 된다.

예시2)
String str = new String();
char c = ' ';
str = "안녕하세요";
c = str.charAt(0);
System.out.println(c);


3. charAt()을 사용하는 다양한 방법

다양한 방법이라고는 했지만 사실 지금으로서 가장 많이 사용하는 방법은
딱 2가지 뿐이다.
String타입의 참조변수 뒤에 붙여서 사용하거나
Scanner에서 next() 또는 nextLine() 뒤에 붙여서 사용하는 방법이다.
앞서 예시에서 봤던 방법은 String타입의 참조변수 뒤에 붙여서 사용하는 방법이었다.
그리고 알아볼 방법은 Scanner에서 바로 사용하는 방법이다.
Scanner로 예시를 하나 만들어보자.

예시3)

Scanner sc = new Scanner(System.in);

char c1 = ' ';
char c2 = ' ';

c1 = sc.next().charAt(0);
c2 = sc.nextLine().charAt(3);

System.out.println(c1);
System.out.println(c2);

sc.close();

예시3을 실행해서 원하는 단어나 문장을 입력하고 실행해보자.
이전의 예시와 똑같이 동작한다는 것을 알 수 있다.
이렇게 String타입의 참조변수 뒤에 붙이지 않고
입력받는 곳에 바로 붙여도 동일하게 사용할 수 있다.


4. 마무리

자바 프로그래밍에서는 String타입인 문자열을
char타입의 문자로 변환해주는 명령어가 존재한다.
바로 charAt()이라는 녀석이다.
charAt()은 String타입의 문자열에서
해당 위치에 있는 문자만을 char타입으로 변환
사용할 수 있게 만들어주는 녀석이다.
String str = new String("예시");
char c = str.charAt(0);
의 형태로 사용할 수 있으며
여기에서 ( )안의 0은 해당 문자열의 위치를 가리킨다.
따라서 charAt(0)이라면 문자열의 0번째 문자를 char타입으로 변환해주는 것이다.
사용방법은 String타입의 참조변수 뒤에 .을 입력하고 charAt('문자번호')을 입력하면 된다.


5. charAt-'0', charAt-48
예 ) 문자 '2'를 숫자 2로 바꾸는 방법은 문자'2'에서 문자'0'을 빼주는 것이다.
알파벳이나 숫자는 문자코드가 연속적으로 할당되었기 때문에 이런 방법이 가능하다.
예를 들어, '2'-'0'은 50-48으로 변환되고, 결과는 숫자 2가 된다.
( '2'-'0' => 50-48 => 2 )


6. 백준 알고리즘 2577번 숫자의 개수

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
int C = sc.nextInt();

int mul = A * B * C; // 세 수의 곱
String strMul = Integer.toString(mul);

int arr[] = new int[10];

for (int i = 0; i < strMul.length(); i++) {
arr[strMul.charAt(i) - '0']++;
//ex) 문자 '2'를 숫자 2로 바꾸는 방법은 문자'2'에서 문자'0'을 빼주는 것이다.
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}