[kosta] Java 연산자

cokesh·2022년 4월 20일
0

kosta

목록 보기
1/9
post-thumbnail

자바의 데이터 타입

데이터타입에는 크게 기본형(Primitive)과 참조형(Reference)가 있다.

기본형

  • 숫자형
    -정수형 : byte / short / int / long
    -실수형 : float / double
  • 문자형
    -char
  • 논리형
    -boolean

각 데이터 타입의 크기는 아래와 같다.
1byte - byte
2byte - short char
4byte - int < float
8byte - long < double

float 과 double은 각각 4byte 8byte 이지만 표현할수 있는 범위가 더 크다.

형변환

형변환은 크게 두가지로 나뉜다. 자동형변환 / 강제형변환
자동형변환이란?
프로그램 실행 도중에 자동적으로 타입변환이 일어나는 것을 말한다.
작은 크기를 가진 타입이 큰 크기의 타입에 저장될 때 발생한다.
반대로 작은 크기를 가진 타입안에 큰 크기의 타입을 저장할 때는 어떻게 될까?
아쉽게도 자동으로 이뤄지지 않으면서 그대로 실행할 경우 컴파일상 오류가 발생한다.

사진과 같이 int타입의 값을 byte 변수에 담을수 없는 것처럼 말이다.

그렇다면 이를 해결하기 위한 방법은?
바로 "강제형변환"이다.
이 방법은 큰 그릇을 작은 그릇 사이즈로 쪼개어서 한 조각만 작은 그릇에 넣는것이다.
강제형변환을 캐스팅이라고 한다.
캐스팅을 할 때에는 캐스팅연산자인 ()를 사용하는데 괄호 안에 들어가는 타입은 쪼개는 단위이다.

short타입과 char타입은 메모리공간이 서로 2byte로 같지만 short는 음수부터 양수까지의 범위이므로 char는 문자가 들어가는 타입이기때문에 애초에 자동형변환이 성립이 되지않음
또한, boolean 타입은 다른 타입과(강제, 자동)형변환이 불가능하다.

캐스팅을 할 때에 가장중요한 것은 사용자로부터 입력받은 값을 변환할 때에 값의 손실이 발생하면 안된다. 캐스팅하기 전에 우선 안전하게 값이 보존될수 있는지 검사하는 것이 좋다!

int i = 128;

if(i<Byte.MIN_VALUE)||(i>Byte.MAX_VALUE){
	System.out.println("byte타입으로 변환할 수 없다.");
    System.out.println("값을 다시 확인해 주세요.");
} else{
	byte b = (byte)i;
    System.out.println(b);
}
profile
개발 공부로그~

0개의 댓글