char타입의 연산

Daniel·2023년 6월 21일
0

Back-End

목록 보기
18/48

프로그래밍을 공부하다 보면 데이터 타입이 맞지 않아도 서호 호환? 이되고 값을 서로 주고받는 모습을 자주 보게된다.
물론 형변환을 알고 있어 그리 낯선 모습은 아니지만 조금 더 알아보고자 기록하려한다.

묵시적 형변환(확대형변환)

작은 데이터 타입을 큰 데이터 타입으로 변환하여 값이 정말도를 잃거나 오버플로우 문제가 발생하지 않는 변환

Byte byte = 127;
Long long = 0;

long = byte;

log.info("Byte -> Long : {}", long); // "Byte -> Long : 127"

명시적 형변환(축소형변환)

큰 데이터 타입을 작은 데이터 타입으로 변환하는 작업
잠재적으로 정밀도를 잃거나 잘림 문제가 발생할 수 있습니다. 축소 변환에는 의도된 변환에 대해 컴파일러에 알리기 위해 명시적 유형 캐스팅이 필요하다.

Byte byte = 0;
Long long = 9223372036854775807;

byte = (Byte)long;

log.info("Long -> Byte : {}", byte); // "Byte -> Long : -1"

문자 - 정수형변환

char은 (문자형, 문자 정수형)이라고 표현하며 16비트 데이터 타입이다.
문자 데이터 형식을 저장할 수 있고, 유니코드를 직접 넣어 문자를 표현할 수도 있다.

char ch = 'A';
int charValue = (int)ch;

log.info("charValue : {}", ch) // ASCII값(10진수 65)로 변환된다.

정리되지 않았던 부분

class Solution {  
	public String solution(String str1, String str2) {  
		return IntStream.range(0, str1.length())  
			.mapToObj(idx -> String.valueOf(str1.charAt(idx)) + str2.charAt(idx))  
			.reduce("", String::concat);  
	}  
}

String.valueOf(str1.charAt(idx)) + str2.charAt(idx) 이 부분에서 약간 어..?하고 헷갈렸다.

내 로직은 처음에 str1.charAt(idx)) + str2.charAt(idx) 이렇게 작성해 놓고 자꾸 콘솔에는 숫자만 출력되길래 왜 안되지..? 하고 있었다....

두개의 char 타입을 연산하면 JAVA는 해당 유니코드 값으로 연산을 수행한다.

즉, 나는 String 으로 반환받길 원하니깐 두 char 타입 중 적어도 하나가 String 타입으로 변환되어야 했었다.

profile
응애 나 애기 개발자

0개의 댓글