자바

JAVA STEP 8. Casting

2023. 2. 6. 13:01
728x90

★ 형변환

- Casting, Data Type Casting

- 하나의 자료형을 또 다른 자료형으로 변환하는 작업

- 코드 작성을 유연하게 하기 위해서 사용

- 값형끼리만 가능하다. (Boolean 제외)

- ex) byte, short, int, long, float, double, char

★ 오버플로우

- 명시적 형변환 시 발생하는 데이터가 넘치는 현상

 

1. 암시적 형변환

  • 큰형 = 작은형
  • 100 % 안전한 작업
  • ex)
  •  
//--------------------암시적형변환----------------------		
		int n1;
		int n2;
		
		//= 연산자
		//- LValue(Left Value)공간 = Rvalue(값)
		//- LValue와 Rvalue의 자료형은 동일해야 한다.(100%)
		//- LValue와 Rvalue의 자료형이 다르면 에러가 발생한다.
		
		//100이라는 데이터를 n1이라는 공간에 넣어라
		//int(n1) = int(100)
		n1 = 100;
		
		//n1이라는 공간의 데이터를 가져와서, n2라는 공간에 넣어라.
		//int(n2) = int(n1)
		n2 = n1; //변수끼리의 복사
		
		System.out.println(n2);
		
		short a = 10; //2byte, 원본
		int b; 		  //4byte, 복사본
		
//		int = short > 에러!!!
//		암시적 형변환 발생(우리 눈에 보이지 않게 무엇인가 일어나고 있는 형변환)
//		큰형 = 작은형
//		(int) : (자료형)데이터 > 형변환 연산자
		b = a; //short를 int로 변환하고 int를 int에 넣음.
		
		//뒤의 a를 int형으로 변환해라!
		//b = (int)a; //번역 결과
		
		System.out.println(b); //검증, 복사본 확인
		
		int c = Integer.MIN_VALUE; //4byte, 원본
		long d;		 //8byte, 복사본	
		
		//long = int
		//암시적 형변환
		d = c;
		//d = (long)c; //번역 결과
		System.out.println(d);
		
//——————————암시적형변환———————————

2. 명시적 형변환

  • 작은형 = 큰형
  • 경우에 따라 다르다. (안전 or 문제발생)
  • 개발자가 신경을 써야할 부분. > 원본의 값이 복사본의 영역을 벗어나지 않는지
  • 에러가 발생하지 않기 때문에 더욱 위험하다.
  • ex)
  •  
//——————————명시적형변환———————————
		int e = 100000; //4byte, 원본
		short f; 	//2byte, 복사본
		
		//Type mismatch: cannot convert from int to short
		//short = int
		//명시적 형변환 > 형변환 연산자를 생략하면 안된다. > 반드시 작성
		f = (short)e;
		
		System.out.println(f); //100,000을 넣었을 때, 출력이 -31072라는 현상이 발생함. 
		
		//ex) 은행 계좌
		long g = 3000000000L; //내통장 > 30억
		int h;				  //이체되는 계좌
		
		//계좌간 복사
		h = (int)g;
		
		System.out.println(h); //계좌이체 결과  -1,294,967,296

3. 자료형별 형변환

  • 자료형 마다 형변환 시 다른 경우가 생길 수 있다.
  • 정수형 리터럴 int
  • 실수형 리터럴 double
  • 대입 연산자는 좌우 자료형이 동일해야 한다.
  • ex)
  •  
		//byte = int
		//작은형(1) = 큰형(4) > 명시적 형변환
		byte m1 = 10; //서비스 문법
		
		//short = int
		//작은형(2) = 큰형(4) > 명시적
		short m2 = 10;
		
		//int = int
		//형변환 없음.
		int m3 = 10;
		
		//long = int
		//큰형(8) = 작은형(4) > 암시적 
		long m4 = 10;
		
		//float = double
		//작은형(4) = 큰형(8)
		//float f1 = (float)3.14;
		float f1 = 3.14f;
		
		//double = double
		double f2 = 3.14;
		
		
		//정수 <-> 실수
		long n1 = 100; //원본(8)
		float n2;	   //복사(4)
		
		//float(4) = long(8)
		//암시적 형변환
		//이게 되는 이유 : float의 저장 공간이 long보다 크기 때문이다.
		n2 = n1 + 1F;
		
		System.out.println(n2);
		
		double n3 = 3.14;
		int n4;
		
		//명시적 형변환
		//작은형 = 큰형
		n4 = (int)n3;
		
		System.out.println(n4); //소수점 이하 절삭
		
		
		//*** 정수와 실수간의 크기 비교는 단순하게 물리 크기인 byte로 계산하는게 아니라, 실제 표현 가능한 숫자의 범위로 비교해야 한다.
		//- int(4) = float(4) : x
		//- int(4) < float(4) : o
		
		//크기 정리 (정수 < 실수)
		//byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
		
		
		//byte, short, int, long, float, double
		//char
		
		//char > 문자형 > 정수형(숫자형)
		//char = 숫자 자료형이다.
		
		//'A' > 숫자?
		//'@' > 숫자?
		
		//char(2byte) = short(2byte)
		char c1 = 'A'; //원본
		short s1; 	   //복사본
		
		//명시적 형변환
		s1 = (short)c1;
		
		System.out.println("s1: " + s1); //'A' = 65
		
		short s2 = 97; //원본 //'a' = 97 
		char c2;
		
		//명시적 형변환
		c2 = (char)s2;
		
		System.out.println("c2 : " + c2); // 97 = 'a'
		
		//*** char를 short로 변환하면 안된다.
		//*** char를 문자코드로 변환하려면 int를 사용한다.
		//- char > int
		//- int > char
		
		char c3 = '가';
		int a3;
		
		//암시적 형변환
		a3 = c3;
		
		System.out.println("a3: " + a3);
		
		//몇몇 문자의 코드 암기!!
		System.out.println((int)'A'); //65
		System.out.println((int)'Z'); //90
		
		System.out.println((int)'a'); //97
		System.out.println((int)'z'); //122
		
		System.out.println((int)'0'); //48
		System.out.println((int)'9'); //57
		
		//한글 체계
		//- 완성형 한글(가, 나, 다, 강, 곽, 감..)
		//- 조합형 한글(ㄱ, ㄴ, ㄷ, ㅏ, ㅑ…) > 사용x
		System.out.println((int)'가'); //44032
		System.out.println((int)'힣'); //55203
		
		
	}

}
728x90
저작자표시 비영리 변경금지 (새창열림)

'자바' 카테고리의 다른 글

JAVA STEP 10. 자바 예제모음  (0) 2023.02.06
JAVA STEP 9. Operator  (0) 2023.02.06
JAVA STEP 7. 카페 무인전산 시스템 만들기(기초)  (0) 2023.02.05
JAVA STEP 6. INPUT  (0) 2023.02.03
JAVA STEP 5. OUTPUT  (0) 2023.02.03
'자바' 카테고리의 다른 글
  • JAVA STEP 10. 자바 예제모음
  • JAVA STEP 9. Operator
  • JAVA STEP 7. 카페 무인전산 시스템 만들기(기초)
  • JAVA STEP 6. INPUT
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • DBA
  • JavaScript
  • 개발블로그
  • 정보처리기사필기
  • 백준
  • 웹개발자
  • DB
  • 웹개발
  • 데이터베이스
  • jsp
  • 앱개발자
  • html
  • 자바
  • 백엔드
  • 코딩테스트
  • 알고리즘
  • css
  • 프론트엔드
  • IT자격증공부
  • React
  • IT개발자
  • 정보보안전문가
  • 웹페이지
  • ajax
  • jquery
  • java
  • 정보처리기사
  • 개발자
  • IT자격증
  • it

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
JAVA STEP 8. Casting
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.