1. 묵시적 (암시적) 형변환 (=자동 형변환)
-작은 데이터 타입의 데이터를 큰 데이터타입으로 변환 하는것
-자바 컴파일러에 의해 자동으로 형변환이 일어남
-아무런 문제가 발생하지 않으므로, 개발자가 신경쓸 것이 없음
2.명시적 형변환 = 강제형변환
-큰데이터 타입의 데이터를 작은 데이터 타입으로 변환하는 것
=>작은 데이터타입의 표현범위보다 크므로 Overflow(넘침)가 발생할 수 있다.
-Overflow 가 발생할 우려 때문에 자동 형변환이 일어나지 않음
=> 코드 상에 오류가 발생하여 실행되지 않음
-반드시 형변환 연산자를 사용하여 작은 데이터타입으로의 강제 형변환을 수행해야함.
=> 우변(큰데이터타입)의 앞쪽에 '(작은데이터타입이름)' 형태로 명시해야함
=> 명시적 형변환 후에는 overflow에 의해 원본데이터와 전혀 다른 값이 저장될수 있음
=> 따라서, 명시적 형변환은 변환 후의 책임을 개발자에게 맡김.
*** 실수형 (float,double) 은 데이터 표현 방식 차이에 의해
정수형 보다 무조건 큰타입으로 취급됨
long 타입보다 float타입의 메모리 크기는 작지만, 표현범위는 더크다
char 타입과 byte & short 타입 간의 관계
- byte(1Byte) : -128 ~ +127
- short(2Byte) : -32768 ~ +32767
- char(2Byte) : 0 ~ 65535
- char 타입의 경우 문자 표현을 위해 양수로만 표현하므로
byte 타입과 short 타입보다 양수 표현 범위가 크다
byte 타입과 short 타입은 음수 표현이 가능하다.
=> 따라서 char 타입과 byte &short 타입 간에는 반드시 명시적 형변환 필수!
문자열의 덧셈
-어떤 데이터 타입이라도 문자열과 덧셈 연산을 수행하게 되면
무조건 문자열 결합이 일어나므로 새로운 문자열이 생성됨
===int형정수 +문자열 =문자열===
1+1 = 정수+정수
1+"1" = int +String = Sting => 1"1"
"1"+"1" = String +String = String "11"