JAVA 1.2 형변환
형변환 : Type Casting
0411 강의내용
형변환이란?
값의 종류, 자료형을 바꾸는 개념이며 컴퓨터 안에서 값을 처리하는 규칙이다.
-
= ( 대입연산자 ) 를 기준으로 왼쪽, 오른쪽이 같은 자료형이어야 한다.
- 같은 자료형에 해당되는 리터럴 값만 대입이 가능하다
- 자료형이 다를 경우 ? == 값을 바꿔서 대입해야 한다. -
같은 자료형들끼리만 연산이 가능하다.
- 다른 자료형들끼리 연산을 하고 싶다? 둘 중에 하나를 " 형변환 " 을 해서 나머지 하나와 동일하게 만들어줘야 한다. -
연산의 결과물도 같은 자료형이어야 한다.
ex) 1 + 1 = 2(정수), 1.1 + 1.1 = 2.2(실수)
-
[표현법]
( 바꿀자료형 ) 값
형변환 연산자, cast 연산자
형변환의 종류
-
자동형변환 ( promotion )
- 자동으로 형변환이 진행된다.
- 작은 크기의 자료형 -> 큰 크기의 자료형
- 내가 형변환을 할 필요가 없다. -
강제형변환 ( 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);
Author And Source
이 문제에 관하여(JAVA 1.2 형변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@haan/JAVA-1.2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)