자바(Java) 형변환(type castiong)

유필선·2024년 3월 6일
0

자바(Java)

목록 보기
6/20
post-thumbnail

형변환(type castiong) 이란?

변수나 리터럴의 타입을 다른 타입으로 변환하는 것을 형변환(castiong)이라고 한다.

  • 코드를 작성할 때 서로 다른 타입간의 연산을 수행해야 하는 경우사용
    타입 변환에도 규칙이 있는데, 메모리에 할당받은 바이트의 크기가 상대적으로 작은 타입에서 큰 타입으로의 타입 변환은 생략할 수 있다. 하지만 메모리에 할당받은 바이트의 크기가 큰 타입에서 작은 타입으로의 타입 변환은 데이터의 손실이 발생하게 된다. (용량이 다르니까)

자동형변환 (암시적 형변환)

  • 프로그램 실행 도중에 컴파일러가 자동적으로 타입 변환이 일어나는 것을 말한다.
  • 컴파일러가 자동으로 형변환을 해서 출력 시 문제가 발생하지 않도록 하는 것.
int i = 5
double d = i

System.out.println(d); // 5.0 출력
// 자동형변환

자동 형변환의 규칙

  • byte의 크기가 작은 것에서 큰 것으로 갈 때 형변환이 이루어 진다.
  • 정수에서 실수는 자동 형변환이 가능하지만, 실수에서 정수는 자동으로 형변환이 되지 않는다.
  • 정수형에서 실수형으로 형변환 할 때는 실수형을 double로 쓴다. ( flaot는 정밀도가 7자리라 오차값이 들어갈수도 있음)

ex)
byte 타입은 1byte 크기를 가지고, int 타입은 4byte 크기를 가지므로 int 타입이 큰 크기 타입이고, byte 타입이 작은 크기 타입이다

즉, 아래 코드와 같이 서로 다른 타입의 데이터라도 낮은 자료형과 높은 자료형을 연산할 경우 자동으로 형변환이 되어 계산된다.
작은 타입과 큰 타입을 구분하는 기준은 각 데이터 타입의 메모리 크기(byte) 이다. 위의 사진과 같이 int타입은 메모리 크기가 4바이트고, short 타입은 2바이트이므로 int가 short보다 큰 타입이 되게 된다. 반면 long은 8바이트이므로 int가 long보다는 작은 타입이 된다.

수동형변환 (명시적 형변환) or 강제형변환

  • 수동형변환 하는 방법은 형변환하고자 하는 변수, 리터럴 앞에 변환 하고자 하는 타입을 괄호와 함께 작성한다.
    작은 크기의 타입은 큰 크기의 타입으로 자동형변환이 되지만, 반대로 큰 크기의 타입은 작은 크기의 타입으로 자동형변환이 되지 않는다.
  • 메서드를 사용한 형변환 방법이 있다.

메서드를 사용한 형변환 방법

문자 → 숫자

1. String to int
자바 Integer 클래스의 parseInt함수와 valueOf 함수로 변환 가능

2. String to double, float
정수와 마찬가지로
자바Double, Float 클래스의 parseDouble함수와 valueOf 함수로 변환 가능

숫자 → 문자

1. int to String

  • 자바 String클래스의 valueOf 함수로 변환 가능
  • 자바 Integer클래스의 toString 함수로 변환 가능

2. double, float to String

  • 자바 String클래스의 valueOf 함수로 변환 가능
  • 자바 Double, Float클래스의 toString 함수로 변환 가능

정수 ↔ 실수

1. double, float to int
(int)캐스팅 방식으로 변환한다.
이때 실수형의 소수점 아래자리는 버려진다.

2. int to double, float
(double),(float)캐스팅 방식으로 변환한다.
소수점 아래자리는 0으로 채워진다.

profile
이해해버려라!

0개의 댓글