1 minute read

1. 형 변환(Casting)

변수는 크게 기본형, 참조형이 있고 기본형에는 8가지의 자료형이 존재한다.
각 자료형 저장하는 값과 크기에 따라 나뉜다.

자료형 키워드 크기
논리형 boolean 1byte
문자형 char 2byte
정수형 byte 1byte
  short 2byte
  int 4byte
  long 8byte
실수형 float 4byte
  double 8byte
참조형 String  

서로 다른 형태의 값을 대입, 계산 하거나 출력 할 수 없기 때문에
필요 시 자료형을 변환하도록 한다. 이것을 형 변환이라고 한다.(boolean 제외)
형 변환은 ‘자동 형 변환’, ‘강제 형 변환’으로 나뉜다.


2. 자동 형 변환(묵시적 형 변환)

  • 컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 변환
  • byte -> short -> int -> long -> float -> double
    • 오른쪽으로 갈수록 범위가 큰 자료형
    • byte / short 자료형은 무조건 int로 변환
public void casting() {
    int i = 15;
    double d = i; // 정수 'i'를 실수 'd'에 대입
    System.out.println("d : " + d);
    // 출력 결과
    // d : 15.0
    // int > double로 자동 형 변환
}

double이 int의 값의 범위보다 크기 때문에 자동으로 형 변환이 가능하다.

public void castingTest() {
    int i;
    char ch;
    i = 'A';
    ch = 65;
    System.out.println("i : " + i);
    System.out.println("ch : " + ch);
    /* 출력 결과
    * i : 65 // A를 유니코드로 변환 > i는 int 자료형이었기 때문에 자동 형 변환
    * ch : A // 65를 문자로 변환 > ch는 char 자료형이었기 때문에 자동 형 변환
    */
}

3. 강제 형 변환(명시적 형 변환)

  • 값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환
    • 데이터 손실 발생 가능
  • 형 변환 연산자 사용
    • () : cast 연산자
public void casting() {
    // 변수 선언
    int i;
    double d;
    int iSum ;

    // 변수에 각 값을 할당
    i = 10;
    d = 10.5;
    // 에러 발생: double 자료형인 'd'는 자신보다 작은 int 자료형(iSum)에 대입 불가 > 강제 형 변환 필요

    // iSum = i + d;
    // 'd'를 int 자료형으로 변환. 형변환 연산자 괄호 안에 변환할 자료형을 기입
    // 'd'를 형 변환 하면서 소수점 아래는 삭제
    iSum = i + (int)d;
    // or 전체를 int 자료형으로 변환
    // iSum = (int)(i + d);
    
    System.out.println("i + d = " + iSum);
    // 출력 결과: i + d = 20
}

동일한 자료형 ! 기억할 것!
그나저나.. 블로그에 카테고리 만들고 싶은데.. 오늘 하루 종일 삽질만 하고 못 만들었다.ㅠㅠ
내일 다시 도전!!!!!


Categories:

Updated: