본문 바로가기

JAVA

형변환

프로그래밍을 하다보면 문자열로 입력받은 변수를 숫자로 변환해서 계산하고 싶은 경우, 문자열에 숫자값을 추가하고 싶은 경우 등 변수형을 다른 형으로 변환이 필요한 경우가 많음

 

형변환은 주로 기본형 변수인 정수 ↔ 실수 ↔ 문자 들 사이에서 일어남

정수 ↔ 실수 간에 변환할때는 ({원하는 타입}) 명령을 통해 변환할 수 있습니다. (캐스팅: 명시적 형변환)

정수형 ↔ 실수형

Double, Float to Int

(Int)캐스팅 방식으로 실수를 정수로 치환하는 방법. 이때 실수형의 소수점아래자리는 버려진다.

 

double doubleNumber = 10.101010;
float floatNumber = 10.1010

int intNumber;
intNumber = (int)doubleNumber; // double -> int 형변환
intNumber = (int)floatNumber; // float -> int 형변환

 

Int to Double, Float

(Double,Float) 캐스팅으로 정수형을 실수형으로 변환하는 방법

 

int intNumber = 10;

double doubleNumber = (double)intNumber; // int -> double 형변환
float floatNumber = (float)intNumber;  // int -> float 형변환

자동 형변환

Java 프로그래밍에서 형변환을 직접적으로 캐스팅하지 않아도 자동으로 형변환 되는 케이스가 있다.

프로그램 실행 도중에 값을 저장하거나 계산할때 자동으로 타입변환이 일어남

 

1. 자동 타입변환은 작은 크기의 타입에서 큰 크기의 타입으로 저장될때 큰 크기로 형변환이 발생한다.

 

변수 타입별 크기 순서

byte(1) → short(2) → int(4) → long(8) → float(4) → double(8)

 

byte byteNumber = 10;
int intNumber = byteNumber;    // byte -> int 형변환
System.out.println(intNumber); // 10

char charAlphabet = 'A';
intNumber = charAlphabet;   // char -> int 형변환
System.out.println(intNumber); // A의 유니코드 : 65

intNumber = 100;
long longNumber = intNumber; // int -> number 형변환
System.out.println(longNumber); // 100

intNumber = 200;
double doubleNumber = intNumber; // int -> double 형변환
System.out.println(doubleNumber); // 200.0  (소수점이 추가된 실수출력)

 

2. 작은 크기의 타입이 큰 크기의 타입과 계산될때 자동으로 큰 크기의 타입으로 형변환이 발생합니다.

 

int intNumber = 10;
double doubleNumber = 5.5;
double result = intNumber + doubleNumber; // result 에 15.5 저장됨 (int -> double)

intNumber = 10;
int iResult = intNumber / 4; // iResult 에 2 저장됨 (int형 연산 -> 소수점 버려짐)

intNumber = 10;
double dResult = intNumber / 4.0; // dResult 에 2.5 저장됨 (double형 연산 -> 소수점 저장)

 

자동 형변환 vs 강제 형변환

  • 작은 타입 > 큰 타입 형변환시 (자동 형변환)
    • 더 큰 표현범위를 가진 타입으로 변환되는것이라 값의 손실이 없습니다.
    • 값의 손실없이 변환이 가능하기 때문에 컴파일러가 자동으로 형변환을 해줍니다.
  • 큰 타입 > 작은 타입 형변환시 (강제 형변환 = 캐스팅)
    • 더 작은 표현범위를 가진 타입으로 변환된는것이라 값의 손실이 생깁니다.
    • 값의 손실이 생기기 때문에 자동으로 형변환을 해주지 않고 개발자가 선택하여 형변환을 합니다.

'JAVA' 카테고리의 다른 글

조건문  (0) 2023.04.04
연산자  (0) 2023.04.03
숫자와 문자  (0) 2023.04.03
변수와 상수  (0) 2023.04.03
개발언어 JAVA  (0) 2023.04.03