알고리즘을 풀다가 알게 된 사실을 정리 해 두고자 한다.
다음과 같이 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가 되는 것이다.
반응형
'Android > Java' 카테고리의 다른 글
[Java] 자바 빌더 패턴: 복잡한 객체 생성의 단순화와 한계점 탐구 (0) | 2024.04.09 |
---|---|
[Java] 오버로딩과 오버라이딩: 객체 지향 프로그래밍에서의 메소드 다형성 이해하기 (0) | 2024.04.02 |
[ Java ] 인터페이스(interface)의 핵심 이해: 주요 특징과 사용 예시 (0) | 2024.04.01 |
[ Java ] Java에서 문자열 처리의 효율성을 높이는 방법: StringBuilder 활용하기 (0) | 2024.03.22 |
[ Java ] Integer.parseInt(String s, int radix)를 활용한 자바에서의 진법 변환 기술 (0) | 2024.03.20 |