주인장의 프로그래밍 개발 공부방

[자바 프로그래밍 기초] 4. charAt()에 대해서 알아보자. 본문

Java/자바 프로그래밍 기초

[자바 프로그래밍 기초] 4. charAt()에 대해서 알아보자.

거신 2019. 6. 25. 09:16

이번에 알아볼 charAt()이라는 녀석은 이전에

Scanner에 대해서 알아볼 적에 잠시 등장했던 녀석이다.

오늘은 이 녀석이 도대체 뭐하는 녀석이며

어떻게 사용하는지에 대해서 알아보려고 한다.

 

1. charAt()이란?

 

이전에 Scanner에 대해서 알아봤었는데

그 부분에서 조금 특별한 경우가 있었다는 것을 기억하고 있어야 한다.

바로 char타입으로는 입력을 받을 수 없고

String타입으로 입력받는 것이 2개나 존재한다는 점이다.

 

프로그래밍 부분이나 논리적이 아니라

상식적으로 생각했을 때

일반 사용자가 데이터를 입력한다고 가정하면

문자 딱 한 자만 입력하는 경우는 극히 드물 것이다.

일반적이라면 단어나 문장을 입력하는 경우가 훨씬 많을 것이기 때문에

굳이 한 글자만 입력할 수 있는 기능을 넣기 보다는

그냥 문자열(단어, 문장)로 입력받는 것이 훨씬 효율적일 것이다.

 

하지만 여기에서 문제가 발생한다.

바로 char타입사용할 수 없게 되는 것이다.

기본형 변수인 char는 단 한 글자만 저장할 수 있는 변수인데

Scanner로 입력을 받을 때는 String 타입으로 밖에 받을 수 없는 것이다.

그래서 등장한 것이 바로 charAt()이라는 녀석이다.

이 녀석은 String으로 저장된 문자열 중에서 한 글자만 선택해서

char타입으로 변환해주는 녀석이다.

이 녀석이 존재하고 있기 때문에 우리는 Scanner를 쓰면서도 char타입을 사용할 수 있는 것이다.

그렇다면 코드에서 어떤 식으로 존재하고 있는지와

어떻게 사용하는지에 대해서 알아보도록 하자.

 

2. charAt()의 형태

 

기본적으로 charAt()을 사용하려면 String타입의 문자열이 필요한 것은 당연할 것이다.

예시를 하나 보자.

 

예시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);

 

위의 예시1에서 코드를 추가해서 완성시켜봤다.

예시2의 코드를 실행해보면 콘솔창에 안 이라고 출력되는 것을 확인할 수 있다.

char타입으로 변환한 문자를 저장하기 위한 char타입의 변수 c를 선언하고

변수 cstr.charAt(0)의 값을 저장한 것이다.

그런데 여기에서 ( )안에 숫자가 들어간 것을 확인할 수 있다.

이 숫자의 의미는 무엇일까?

 

바로 문자열에서 문자의 순서를 나타내는 것이다.

다시 말해서 몇 번째에 있는 문자를 가져올 것인지에 대한

index번호가 되겠다.

현재 charAt(0)이라고 작성했는데

이 말은 str이 가리키고 있는 문자열에서 0번째에 있는 문자를

char타입으로 변환한다는 의미가 되겠다.

그러니까

안녕하세요 에서 0번째(맨 첫 번째)문자인 '안'만 가져오는 것이다.

(프로그래밍에서는 숫자의 시작을 0부터 시작한다는 걸 다시 한 번 상기시키자.)

 

만약 여기에서 charAt(1)이라고 적었다면

출력은 '안'이 아니라 '녕'이 출력될 것이다.

이렇게 자신이 원하는 문자만 가져올 수 있는 것이다.

앞서 언급했지만 당연히 가져온 문자는 char타입으로 변환된다.

 

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타입의 참조변수 뒤에 붙이지 않고

입력받는 곳에 바로 붙여도 동일하게 사용할 수 있다.

 

여기에서도 눈여겨볼 부분은 당연한 것이지만

sc.next()sc.nextLine()은 분명 String타입으로 입력을 받는다고 했는데

char타입의 변수 c1과 c2에 바로 저장을 한다는 점이다.

String타입의 변수를 선언하지 않아도

이렇게 사용할 수가 있다.

 

당연히 charAt(0)입력한 글자의 1번째 문자,

charAt(3)입력한 글자의 4번째 문자라는 것도 알아야 하겠다.

프로그래밍에서 숫자는 0부터 시작하니까.

 

4. 그렇다면 chatAt()은 입력에서만 사용하는걸까?

 

아니, 전혀 아니다.

앞서 예시를 String으로 입력을 받으면서 char로 변환하는 과정을 들었기 때문에

Scanner를 사용하는 경우에만 쓰는건가하는 의문이 들 수도 있을텐데

전혀 그렇지 않다.

가장 대표적인 예시가 char타입으로 입력을 받고 싶을 때일 뿐이지

charAt()을 사용하는 경우는 무궁무진하다.

그렇기 때문에 Scanner, 입력을 받을 때 사용하는 것으로 이해하지 말고

단순히 String타입을 char타입으로 변환할 때 사용한다고 이해하는 것이 올바르다.

그리고 그 것을 위해서 존재하는 녀석이니 당연한 것이기도 하다.

 

어떠한 String타입의 문자열을 가리키는 참조 변수가 존재할 때

해당 문자열에서 자신이 원하는 문자 하나만 가져오고 싶을 때 사용하는 것이 바로

charAt()이라는 것이다.

그러니까 charAt()은 Scanner와 같이 입력을 받을 때만 사용한다는

그런 좁은 틀에 갇혀있지 않길 바란다.

 

5. 마무리

 

자바 프로그래밍에서는 String타입인 문자열을

char타입의 문자로 변환해주는 명령어가 존재한다.

바로 charAt()이라는 녀석이다.

charAt()은 String타입의 문자열에서

해당 위치에 있는 문자만을 char타입으로 변환

사용할 수 있게 만들어주는 녀석이다.

String str = new String("예시");

char c = str.charAt(0);

의 형태로 사용할 수 있으며

여기에서 ( )안의 0은 해당 문자열의 위치를 가리킨다.

따라서 charAt(0)이라면 문자열의 0번째 문자를 char타입으로 변환해주는 것이다.

사용방법은 String타입의 참조변수 뒤에 .을 입력하고 charAt('문자번호')을 입력하면 된다.

Comments