최근에 Dart로 개발을 하다 보니 문자열과 단일문자에 대한 개념이 완전히 사라졌었다. 왜냐하면 dart에는 Java와 달리 char 타입이 없고, 단일 문자도 String으로 취급하기 때문이다.
이번에 알고리즘 문제를 풀면서 단일 문자를 비교하는데 == " " 이 안된다고 자꾸 오류가 나길래 왜 안되는거지 하고 찾아보니 단일 문자는 ' '를 써야 한다고 한다. 완전히 까먹어버렸었네..... ㅎ ㅠ
[큰따옴표 (" ") - String]
문자열(String)을 나타낼 때 사용된다. 즉, 한 글자 이상의 문자들의 집합을 나타내는것이다.
String text = "Hello, World!"; // 여러 문자로 구성된 문자열
[작은따옴표 (' ') - char]
단일 문자(char)를 나타낼 때 사용된다. 즉, 문자 하나를 나타낼 때만 사용할 수 있다.
char letter = 'A'; // 'A'는 하나의 문자
[차이점]
- " ": 문자열을 나타내며, Java에서는 String 타입
- ' ': 단일 문자를 나타내며, Java에서는 char 타입
[비교 코드]
String 타입으로 받는 한글자의 문자열이라면 " "를 이용하거나 자바에 있는 string.equals(" ")를 이용해야 한다.
반면 char 타입은 ' ' 작은 따옴표를 통해 한 개의 문자를 비교한다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
while (true){
String scString = sc.nextLine();
if ( scString == "#") break; //scString 은 텍스트라 " "를 사용 해야 함
//혹은 if(scString.equals("#")) break; 를 사용해서 비교 해야 함
int count = 0;
String text = scString.toLowerCase();
char[] textArr = text.toCharArray();
for (int i = 0; i< textArr.length; i++) {
//textArr 은 char 형태라 == ' ' 로 사용해야 함
if (textArr[i] == 'a'||textArr[i] == 'e'||textArr[i] == 'i'||textArr[i] == 'o' || textArr[i] == 'u') {
count ++;
}
}
System.out.println(count);
}
}
}
'JAVA' 카테고리의 다른 글
Java 기본 자료형(Primitive Type)과 참조 자료형(Reference Type)의 차이 - 메모리 (1) | 2024.11.15 |
---|---|
Scanner를 그만 쓰고 BufferReader/BufferedWriter를 사용하자 (0) | 2024.11.14 |
자바 표준 입력 Scanner 클래스를 알아보자 (4) | 2024.11.09 |
[Java] nextLine() 오류 (0) | 2024.10.31 |
[Java] 문자열을 반복하는 메서드 - repeat() (0) | 2024.10.24 |