목표

- 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.

 

학습할 것

 

참고 자료

 

Java의 정석:최신 Java 8.0 포함

COUPANG

www.coupang.com

 

 

# 타입 변환의 종류

 

  • 캐스팅 => 명시적 형 변환, 강제 형 변환
  • 프로모션 => 묵시적 형 변환, 암시적 형 변환, 자동 형 변환

 

 

 

 

# 형 변환(캐스팅, casting) 이란?

 

"형 변환이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것"

 

 

  •  같은 타입이 아닌 서로 다른 타입 간의 연산을 수행할 때,
    이럴 때는 같은 타입으로 일치시켜야 한다.
    => 이때 변수나 리터럴의 타입을 다른 타입으로 변환하는 것을 '형 변환(casting)'이라고 한다.

 

 

 

# 형 변환 방법

 

(타입)피연산자

 

형 변환하고자 하는 변수나 리터럴의 앞에 변환하고자 하는 타입을 괄호와 함께 붙여주기만 하면 된다.

여기에 사용되는 괄호()는 '캐스트 연산자' 또는 '형 변환 연산자'라고 한다.

 

class CastingEx1 {
	public static void main(String[] args) {
    	double d= 85.4;
       	int score = (int)d;      // double 타입의 변수 d를 int타입으로 형변환

        System.out.println("score="+score);  // score=85
        System.out.println("d="+d); // d=85.4 <--형변환 후에도 피연산자에는 아무런 변화가 없다.
    }      
}
  • 형 변환 연산자는 그저 피연산자의 값을 읽어서 지정된 타입으로 형 변환하고 그 결과를 반환할 뿐이다.
    => 피연산자인 변수 d의 값은 형 변환 후에도 아무런 변화가 없다.

 

 

기본형간의 형변환

  • float타입의 값을 int타입으로 변환할 때 소수점 이하의 값은 반올림이 아닌 버림으로 처리된다.

 

 

# 정수형 간의

  • int타입(4 byte)의 값을 byte타입(1 byte)으로 변환하는 경우는 크기의 차이만큼 잘려나간다.
    => 경우에 따라 '값 손실(loss of data)'이 발생할 수 있다.
    ex) int -> byte로 형 변환 시

 

 

 

# 실수형 간의 형 변환

  • 정수형처럼 작은 타입에서 큰 타입으로 변환하는 경우, 빈 공간을 0으로 채운다.

 

float를 double로 형변환

 

 

  • 반대로 double타입에서 float타입으로 변환하는 경우,
    double의 가수 52자리 중 23자리만 저장되고 나머지는 버려진다.

double d = 1.0e100;  // float의 최대값보다 큰 값을 d에 저장(1.0x10^100)
float f = (float)d;  // d의 값을 float로 형변환해서 f에 저장. f는 무한대가 된다.

double d = 1.0e-50;  // float의 최소값보다 작은 값을 d에 저장(1.0x10^-50)
float f = (float)d;  // f의 값은 0이 된다.
  • float타입의 범위를 넘는 float로 형 변환하는 경우는 '+-무한대' 또는 '+-0'을 결과로 얻는다.

 

 

 

# 정수형과 실수형 간의 형 변환

 

int타입과 float타입의 저장형식 비교

 

  • 정수형과 실수형은 저장형식이 완전히 다르기 때문에 정수형간의 변환처럼 간단히 값을
    채우고 자르는 식으로 할 수 없다 => 좀 더 복잡한 변환 과정을 거쳐야 한다.

 

 

정수형을 실수형으로 변환

  • 정수는 소수점 이하의 값이 없으므로 비교적 변환이 간단하다.
  • 정수를 2진수로 변환한 다음 정규화를 거쳐 실수의 저장 형식으로 저장될 뿐이다.
  • 실수형은 정수형보다 훨씬 큰 저장 범위를 갖기 때문에, 정수형을 실수형으로 변환하는 것은 별 무리가 없다.

 

실수형을 정수형으로 변환

  • 실수형을 정수형으로 변환하면, 실수형의 소수점 이하 값은 버려진다.
    => 정수형의 표현 형식으로 소수점 이하의 값은 표현할 수 없기 때문

 

 

# 자동 형 변환

  • 경우에 따라 편의상의 이유로 형 변환을 생략할 수 있다
    그렇다고 해서 이루어지지 않는 것은 아니다.
    => 컴파일러가 생략된 형 변환을 자동적으로 추가한다.

 

자동 형 변환의 규칙

  • 컴파일러는 기존의 값을 최대한 보존할 수 있는 타입으로 자동 형 변환시킨다.
  • boolean을 제외한 나머지 7개의 기본형은 서로 형 변환이 가능하다.
  • 기본형과 참조형은 서로 형 변환할 수 없다.
  • 서로 다른 타입의 변수 간의 연산은 형 변환을 하는 것이 원칙이지만,
    값의 범위가 작은 타입에서 큰 타입으로의 형 변환을 생략할 수 있다.

 

 

 

반응형

+ Recent posts