charAt 함수란?
String 타입의 데이터(문자열)에서 특정 문자를 char 타입으로 변환할 때 사용하는 함수이다.
String sample = "abc";
char target = sample.charAt(0);
위처럼 String 변수에서 사용할 수 있으며,
charAt(i)
i 자리에는 int 형 변수를 넣어서 원하는 위치의 문자를 가져올 수 있다.
public class Test {
public static void main(String[] args) {
// 변수 선언
String example = "안녕하세요";
char target1;
char target2;
char target3;
target1 = example.charAt(0);
target2 = example.charAt(1);
target3 = example.charAt(2);
System.out.println(target);
System.out.println(target2);
System.out.println(target3);
}
결과
public class Test {
public static void main(String[] args) {
// 변수 선언
String example = "안녕하세요";
// 문자열 역순으로 char 변수 조회
int exampleLength = example.length()-1;
while (exampleLength >= 0) {
char target;
target = example.charAt(exampleLength);
System.out.println(target);
exampleLength--;
}
}
결과
public class Test {
public static void main(String[] args) {
// 변수 선언
String example = "안녕하세요";
int i=0;
// 문자열 순서대로 char 변수 조회
int exampleLength = example.length()-1;
while (i <= exampleLength) {
char target;
target = example.charAt(i);
System.out.println(target);
i++;
}
// for문 활용
for (int j=0; j<=exampleLength; j++) {
char target;
target = example.charAt(j);
System.out.println(target);
}
}
결과
String 관련 코딩테스트 문제를 풀 때 꼭! 알아야하는 함수라고 한다.
int num = str.charAt(i) - '0';
char 타입의 문자를 int 타입의 변수로 변환할 때 사용하는 함수
ex)
String numbers = "12345";
// 숫자로 구성된 String 변수에서 특정 숫자를 바로 int 변수로 가져올 수 있다.
int targetNumber1 = numbers.charAt(0) - '0';
int targetNumber2 = numbers.charAt(1) - '0';
int targetNumber3 = numbers.charAt(2) - '0';
System.out.println("targetNumber1 = "+targetNumber1);
System.out.println("targetNumber2 = "+targetNumber2);
System.out.println("targetNumber3 = "+targetNumber3);
int test1 = 10 - targetNumber1;
int test2 = 10 - targetNumber2;
int test3 = 10 - targetNumber3;
System.out.println("10 - targetNumber1 = "+test1);
System.out.println("10 - targetNumber2 = "+test2);
System.out.println("10 - targetNumber3 = "+test3);
결과
숫자형태의 String 에서 int 변수로 바로 변환할 때 아스키 코드 관련에서 알아야지 -'0' 을 왜 하는지 이해할 수 있는건가요? 왜 -'0'을 하는지를 모르겠네요ㅠㅠ