개발 무지렁이

[Java] 값의 허용범위와 캐스팅(Casting) 본문

Backend/자바

[Java] 값의 허용범위와 캐스팅(Casting)

Gaejirang-e 2023. 2. 27. 17:57

자동 타입 변환


값의 허용범위가 작은타입이 허용범위가 큰 타입에 대입될 때, '자동 타입 변환'이 발생한다

❗ 예외

  • char타입이 int타입에 대입될 때, 유니코드값(정수)이 대입된다.
  • byte타입(음수포함)은 char타입(음수x)으로 자동 타입 변환 될 수 없다.

강제 타입 변환(Casting)


값의 허용범위가 큰 타입이 허용범위가 작은 타입으로 쪼개서 대입될 때,
캐스팅 연산자 ()를 쓰고, 이를 '캐스팅'이라 한다.

만일, 4byte 크기의 int타입을 1byte 크기의 byte타입으로 캐스팅하면
앞의 3byte는 삭제된다.
즉, 작은 허용범위 타입이 저장할 수 있는 값을 '캐스팅' 해야한다.

❗ 타입 변환은 크기 비교**가 가능해야 한다. (그래서, boolean은 캐스팅이 안된다.)
❗ 자바에서 객체는 크기가 없다 => 캐스팅이 안된다.
  (단, 상속관계에 있을 때는 타입 변환할 수 있다.)

피연산자 중 값의 허용범위가 큰 타입으로 자동 형변환 된다.


 단, byte/ short타입의 변수가 피연산자로 사용되면 int 타입으로 타입 변환된다
  byte a = 10;
  byte b = 20;
  byte sum = a + b; (x)
  int sum = a + b; (0) //30

 단, 피연산자 중 하나가 문자열이면 문자열로 자동 타입 변환된다

  String str = "3";
  int c = 7;
  int sum = str + c; (x)
  String str = str + c (0) //37
Comments