본문 바로가기
Language/Java

자바에서의 데이터 형변환(Type casting)

by 태윤2 2020. 5. 25.

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"

 

'Language > Java' 카테고리의 다른 글

조건문 switch case 문  (0) 2020.05.26
조건문 if  (0) 2020.05.26
연산자  (0) 2020.05.25
데이터타입  (0) 2020.05.25
변수 vs 상수  (0) 2020.05.25