책을 보며 혼자공부할 때는 무의식적으로 지나갔지만,
강의에서 '연산자'에 대한 설명을 들으며 자바가 얼마나 똑똑한지 그동안 놓치고 있었음을 느꼈습니다.
'+ 연산자'는 두항을 더한다.는 의미를 지니며 저는 단순히 덧셈개념으로만 생각했습니다.
하지만,
아래 그림처럼 정수를 계산하는 코드를 작성할 때, 출력 화면에서 어떤 연산을 하였는지 보여주기 위해서
연산을 표기한 문자열("num1 + num2")과 그 결과값을 나타내는 변수(total)를 +로 묶는 모습을 종종 보았습니다.
물론 이런 형태를 볼 때 마다 따라치기 바빠서 별 생각없이 지나갔습니다.
너무 쉽겠지만 위 그림에서 16, 17행의 결과는 어떻게 나올까요??
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
간단히 훑었을 때 저는 16의 결과가 17행처럼 "올해는 5년 입니다."로 나올거라고 생각했습니다.
(ㅠㅠ 타이핑만 치지말고 생각하는 공부를 더 해야겠습니다.)
좌측에 있는 문자열 "올해는 "과 각각의 숫자들이 합쳐지면서 "올해는 2021년 입니다."라는 문자열이 된것이죠.
"올해는 + 2"
"올해는 2 + 0"
~ "올해는 2021년 입니다."
그러면 여기서 더 나아가 17행을 16행처럼 표시되게 하려면 어떻게 해야할까요?
문자가 하나도 없는 문자열을 앞에 넣어주면 됩니다.
맨앞과 두번째에 ""을 넣으니 16행 코드처럼 "2021년은 소띠해입니다."가 출력되었습니다.
이처럼 앞뒤의 자료형을 인식하고 자동적으로 바꿔주는 결과를 보고 자바가 굉장히 똑똑하다고 생각했습니다.
문자열 + 숫자 => 문자열
숫자 + 숫자 => 숫자
- 추가 -
정수형 변수 num1과 문자열 변수 str1을 더하면 해당 결과는 문자열로 변하기 때문에
문자열 변수 typeCheck1에 대입했을 때는 아무 오류가 없지만,
정수형 변수에 대입했을 때는 문제가 생김을 확인할 수 있습니다.
또한, 문자형과 정수형타입의 변수들을 더했을 때 역시, 서로 자료형이 다르지만 아스키 코드값에 맞추어 연산을 처리해줌을 확인했습니다.
'Java' 카테고리의 다른 글
char - int 형변환 살펴보기 (0) | 2021.05.18 |
---|---|
객체생성 (Creating Objects) // ref: new 연산자 (0) | 2021.05.05 |
[OOP] 클래스, 객체, 인스턴스 in Java (0) | 2021.05.03 |
지역변수(local variable) (0) | 2021.04.28 |
상수와 리터럴 (0) | 2021.04.27 |