JAVA 1.2 형변환

한장민·2022년 4월 14일
0

JAVA

목록 보기
3/4
post-thumbnail

형변환 : Type Casting

0411 강의내용

형변환이란?

값의 종류, 자료형을 바꾸는 개념이며 컴퓨터 안에서 값을 처리하는 규칙이다.

  1. = ( 대입연산자 ) 를 기준으로 왼쪽, 오른쪽이 같은 자료형이어야 한다.
    - 같은 자료형에 해당되는 리터럴 값만 대입이 가능하다
    - 자료형이 다를 경우 ? == 값을 바꿔서 대입해야 한다.

  2. 같은 자료형들끼리만 연산이 가능하다.
    - 다른 자료형들끼리 연산을 하고 싶다? 둘 중에 하나를 " 형변환 " 을 해서 나머지 하나와 동일하게 만들어줘야 한다.

  3. 연산의 결과물도 같은 자료형이어야 한다.
    ex) 1 + 1 = 2(정수), 1.1 + 1.1 = 2.2(실수)

-

[표현법]
( 바꿀자료형 ) 값
형변환 연산자, cast 연산자

형변환의 종류

  1. 자동형변환 ( promotion )
    - 자동으로 형변환이 진행된다.
    - 작은 크기의 자료형 -> 큰 크기의 자료형
    - 내가 형변환을 할 필요가 없다.

  2. 강제형변환 ( Type Casting )
    - 자동형변환이 되지 않은 경우에 진행한다.
    - 직접 내가 형변환을 해야할 때는 ( 자료형 ) 을 통해서 진행한다.
    - 큰 크기의 자료형 -> 작은 크기의 자료형
    의 경우에 값의 손실이 발생할 수 있어 신중하게 해야한다.

자동형변환 : 작은 바이트 -> 큰 바이트

특이케이스 : long ( 8byte, 정수) - > float ( 4byte, 실수)
- 정수가 실수로 담길 때 큰 사이즈의 정수가 작은 사이즈의 실수에 대입이 가능하다.
4byte의 float형이 long형보다 담을 수 있는 값의 범위가 크기 때문이다.

특이케이스 : char ( 2 byte ) - > int ( 4 byte )
- char와 int는 양방향 형변환이 가능하다

번외
ctrl + art + 화살표 위아래 = 행 복사
ctrl + d = 행 삭제
ctrl + / = 행 주석
//		System.out.println('b');
//		System.out.println((int)'b');
//		System.out.println('b' + 2); //연산을 할 때는 자료형이 같아야한다
		                             //'b'는 2byte고 2는 4byte라 'b'가 98로 먼저 바뀌고 2와 더해짐
		
//		System.out.println('b'+(char)2); //단일 문자의 경우에는 정수로 바꿔서 연산한다
//		System.out.println((char)2 + (char)'2'); //52 컴퓨터가 볼때 숫자 2랑 문자 '2'랑 다르다
//		System.out.println((char)2 + (char)2); //4
		
		int a = 2; // 정수2
//		System.out.println(a);
//		System.out.println((char)a);
		
		char c = '2'; // 단일 문자 '2'
//		System.out.println(c);
		
		// 비교 연산자 : 좌항과 우항의 값을 비교해서 결과값을 반환
		// 결과값은 논리값인 true, false
//		System.out.println(2 == '2'); //false
//		System.out.println(2 == a); //true
//		System.out.println('2' == c); //true
//		System.out.println(a == c ); //false
	
//		System.out.println(2 == (int)2); // 2 == 50 - false
//		System.out.println((char)2 == '2'); // == 50 - false
//		System.out.println((int)a == (int)c); // 2 == 50 - false
		
		//특이케이스 5. byte, short간의 연산
		
		byte b1 = 126;
		byte b2 = 2;
		
		
//		System.out.println(b1 + b2);
		// 결과값이 int형 => cpu가 값을 처리하는 기본 크기  int형의 크기(4byte)
		
		byte b3 = (byte)128; // byte : -128 ~ +127
//		System.out.println(b3);

강제형변환 : 큰 바이트 -> 작은 바이트
명시적 형변환이라고도 한다.
( 바꿀자료형 ) 값

// 1. double(8byte) -> float(4byte)
		float f1 = 4.0f;
		double d2 = 8.0;
		
		float f2 = (float) d2;
		
		// 2. double(8byte) -> int(4byte)
		double d3 = 10.89;
		int i3 = (int)d3;
		
		System.out.println(i3);
		//0.89 소수점 뒷 부분이 절삭되었다. -> 데이터 손실
		
		int iNum = 10;
		double dNum = 8.99;
		
		System.out.println(iNum + dNum);
		// BigDecimal - 대문자로 시작, 무언가의 클래스일 것이다
		
		int result = iNum + (int)dNum; //더하기보다 캐스팅연산자의 우선순위가 높다
		System.out.println(result);
		
		result = (int)(iNum + dNum);
		System.out.println(result);
profile
HAAN YJGB

0개의 댓글