[JAVA] 형변환 (Casting)

sunny·2020년 12월 14일
0

📚 JAVA

목록 보기
3/3
post-thumbnail

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

  • 데이터 손실이 없는 한에서 자동으로 형변환됨.
  • 화살표 방향 순서대로만 자동 형변환 가능.
  • 실수는 지수 표현식으로 표현되므로 long -> float 형변환 가능.
byte(1) -> short(2), char(2) -> int(4) ->
long(8) -> float(4) -> double(8)

수동형변환 (명시적 형변환)

1. 문자-> 숫자

String strNum = "1";

//string to int
int intNum = Integer.parseInt(strNum);

//string to double
double doubleNum = Double.valueOf(strNum);

//string to float
float floatNum = Float.valueOf(strNum);

//string to long
long longNum = Long.parseLong(strNum);

//string to short
short shortNum = Short.parseShort(strNum); 

2. 숫자 -> 문자


int intNum = 10;
String strNum = "";
		
strNum = String.valueOf(intNum);
strNum = Integer.toString(intNum);
strNum = intNum + "";

3. 정수 <--> 실수

  • 실수의 소수점은 버려진다.
double doubleNum = 1.12345;
float floatNum = 1.123;
int intNum;

//double to int
intNum = (int)doubleNum;

//float to int
intNum = (int)floatNum;

데이터오버플로우 (DataOverFlow)

int num = 290;
byte byteNum = (byte) num; //34
  • byte는 256개 표현가능. 그러나 num은 290이므로 290-54 = 34

int보다 작은 타입 연산시 주의사항

  • byte, short, char
byte byteNum1 = 10;
byte byteNum2 = 20;

byte intResult = byteNum1 + byteNum2;

컴파일 오류가 나는 이유

byte+byte 타입은 자동으로 int+int로 변환되므로
변수의 데이터타입이 byte가 아닌 int여야함.


char 타입에 int값을 대입할 수 있다.

char a = 97; // (char) 생략 가능

System.out.println('a' + 100); // 197, int+int로 자동형변환 된 후 연산
System.out.println('a' + "a"); // "aa"
  • char a의 값이 97인 이유는 아래의 아스키코드 테이블 참조
profile
blog 👉🏻 https://kimnamsun.github.io/

0개의 댓글