Android/Java
[ Java ] 자바에서 "1"과 '1'의 차이점: 문자열과 문자 할당 이해하기
quessr
2024. 3. 19. 11:22
알고리즘을 풀다가 알게 된 사실을 정리 해 두고자 한다.
다음과 같이 String 값을 char[]로 바꾼 상황에서 반복문을 돌며.
문자 c가 "#"과 같을 경우 이진수인 "1"로 바꿔주고자 한 로직이었는다.
발견한 의문점은
stringArray[i] = '1';
로 할 경우에는 에러가 뜨지 않는데,
stringArray[i] = "1";
로 했을 경우에는
다음과 같이 Type mismatch 에러가 난다는 것이었다.
위 현상이 왜 일어나는 것인지 찾아보니,
stringArray[i] = '1';은 문자형(char)으로 '1'을 할당하는 것이므로 작은 따옴표 안에 있는 문자는 문자형으로 인식되며, char 타입에 저장이 된다.
반면에 stringArray[i] = "1";은 큰 따옴표(")로 감싸진 문자열을 할당하려고 시도하는 것이므로 큰 따옴표 안에 있는 문자열은 문자열 타입(String)으로 인식되므로, char 타입에 직접 할당할 수 없습니다. 따라서 타입 불일치(Type mismatch) 오류가 발생한다.
예를 들어서,
'1' + 10 을 하게 되면 결과 값이 59가 나오고
"1" + 10 을 하게 되면 결과 값이 110이 나오게 되는데
작은 따옴표(')는 문자(char)를 표현하기 위해 사용하고, 큰 따옴표(")는 문자열(String)을 표현하기 위해 사용하기 때문이다.
따라서 '1' 문자인 1은 연산을 하게 되면 아스키코드로 변환되어 49가 되고
'1' + 10의 결과값이 59가 되는 것이다.
반응형