자체임상실험
Inform Restaurant
자체임상실험
전체 방문자
오늘
어제
  • 분류 전체보기 (89)
    • IT정보와 지식 TABLE (1)
      • IT정보 및 꿀팁 (0)
      • Windows (1)
      • Linux (0)
    • Linux TABLE (0)
      • 취약점 점검 스크립트 (0)
    • Developer TABLE (33)
      • Java (33)
      • Java Algorithm (0)
    • DataBase TABLE (1)
      • SQLD-P (1)
    • Cloud TALBE (0)
      • AWS (0)
    • Security TABLE (1)
      • 비박스(bee-box) 취약점 점검 (1)
      • 보안기사 (0)
    • Writer TABLE (42)
      • 기사필사 (42)
      • 서평 (0)
    • Growth TABLE (10)
      • 국민취업지원제도 (4)
      • 국비학원 (6)
    • Life TABLE (0)
      • 자서전 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • Switch
  • 디엠제트
  • array
  • 천자칼럼
  • 동아일보
  • for
  • 방사능
  • 배열복사
  • 논설위원
  • 반복문
  • KH정보교육원
  • while
  • do while
  • 조용한 고용
  • 지하공간
  • @
  • 배열
  • 조건문
  • 2차원배열
  • Arrays
  • 경향신문
  • 초장기 주택담보대출
  • if
  • Java
  • 한겨레
  • 국민취업지원제도
  • 문자열비교
  • 논설위원필사
  • 해양오염수
  • 국비학원

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
자체임상실험

Inform Restaurant

형변환 연산자(Casting)
Developer TABLE/Java

형변환 연산자(Casting)

2021. 8. 23. 16:19

형변환(Casting)

  • 변수 또는 상수 자료형을 다른 형식으로 변환하는 것
  • boolean 제외

형변환 사용

  • 컴퓨터 값 처리 원칙에 벗어난 경우 형변환을 사용한다.

컴퓨터의 값 처리 원칙

  • 대입 연산자 기준으로 L-Value 와 R-Value의 값이 같아야 한다.
  • 같은 자료형끼리 계산 가능하다.
  • 계산의 결과도 같은 자료형의 결과값이 나와야 한다.

형변환 방법

형변환 하고자 하는 값과 자료형의 표현 범위에 따라 방법이 나뉜다.

  • 자동 형변환(묵시적 형변환)
  • 강제 형변환

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

  • 컴파일러가 자동으로 형변환을 한다.
  • 데이터 표현 범위가 작은 자료형을 큰 자료형으로 변환한다.
  • byte와 short 자료형의 계산 값은 무조건 int로 변환된다.
  • byte(1byte) -> short(2byte), char(2byte) -> int(4byte) -> long(8byte) -> float(4byte) -> double(8byte) 
public void autoCasting() {
	short s = 10;
	int i = s;
	long l = i;
	double d = l;
    
	double dSum = 12 + 5.5;	// 12.0 + 5.5 = 17.5
	long lSum = 50 + 50;	// (int)50 + (int)50 = int(100), lSum = (long)100
	long lSum2 = 60 + 60L;	// 60L + 60L = 120L
    
	float f = 10_000_000_000L;	// 실수인 float이 long보다 데이터 표현 범위가 크기 때문에 자동 형변환 가능
	
	System.out.println("short s : " + s);
	System.out.println("int i : " + i);
	System.out.println("long l : " + l);
	System.out.println("double d : " + d);
    
	System.out.println("dSum Result : " + dSum);
	System.out.println("lSum Result : " + lSum);
	System.out.println("lSum2 Result : " + lSum2);
    
	System.out.println("float f : " + f);
}

결과값

short s : 10
int i : 10
long l : 10
double d : 10.0
dSum Result : 17.5
lSum Result : 100
lSum2 Result : 120
float f : 1.0E10

byte와 short 자료형의 계산

  • byte와 short 자료형의 계산 값은 무조건 int로 변환된다.
public void autoCasting() {
	byte bData1 = 10;
	byte bData2 = 20;
//	byte bSum = bData1 + bData2;	// ERROR
	int bSum = bData1 + bData2;	// 저장 변수를 int로 변환
    
	System.out.println("byte bSum : " + bSum);
}

형변환 계산 오류

byte, short 형변환 오류

결과값

byte bSum : 30

Unicode 변환

public void autoCasting() {
	int nUC = '가';	// 문자를 Unicode 숫자로 변환
	char ch = 65;	// 숫자를 Unicode 문자로 변환
//	char chx = -65;	// -65라는 Unicode는 존재하지 않음
    
	System.out.println("int nUC : " + nUC);
	System.out.println("char ch : " + ch);
}

char에 음수 대입 시 오류

char 음수 대입 오류

결과값

int nUC : 44032
char ch : A

강제 형변환

  • 개발자가 형변환을 한다.
  • 데이터 표현 범위가 큰 자료형을 작은 자료형으로 변환한다.
  • 데이터 손실이 발생할 수 있다.
public void casting() {
	double d = 3.14;
//	float = d;		// 데이터 범위가 큰 double(8byte)를 작은 float(4byte)로 변환 시 ERROR
	float f = (float)d;
	int i = (int) d;
	
	System.out.println("double d : " + d);
	System.out.println("float f : " + f);
	System.out.println("int i : " + i);
}

결과값

double d : 3.14
float f : 3.14
int i : 3

강제 형변환 시 데이터 손실

public void casting() {		
	int nData = 10;
	int nSum = 0;
	double dData = 7.32;
    
	nSum = (int)(nData + dData);	// int 강제 형변환으로 소수점 절사
    
	System.out.println("nSum : " + nSum);
}

결과값

nSum : 17

 

저작자표시 비영리 (새창열림)

'Developer TABLE > Java' 카테고리의 다른 글

출력 메소드(Print Method)  (0) 2021.08.23
입력(Scanner)받기  (0) 2021.08.20
오버플로우(Overflow)란?  (0) 2021.08.20
    'Developer TABLE/Java' 카테고리의 다른 글
    • 연산자(Operator)
    • 출력 메소드(Print Method)
    • 입력(Scanner)받기
    • 오버플로우(Overflow)란?
    자체임상실험
    자체임상실험
    생활에 유용한 정보와 일상을 담은 휴식처, Sobremesa 입니다.

    티스토리툴바