자동 형변환

byte >> short/char >> int >> long >> float >> double

long sunnyLong;
int sunnyInt = 32555;
byte sunnyByte = 25;

// int → long 자동 변환
SunnyLong = sunnyInt; //32555

// Byte → long 자동 변환
SunnyLong = sunnyByte; //25



강제 형변환

  • 원본 데이터 손실

    • 변환 전 데이터 타입이 변환 후 데이터 타입보다 표현 범위가 넓을 때 강제 형변환을 하게 되는데, 이 표현범위가 넘어간 값을 형변환할 경우 원본 데이터 손실이 발생할 수 있음

    • 표현 범위가 넓을 때 : 데이터 크기가 클 때 or 데이터 타입이(실수/소수) 다를 때

// 아래 순서의 반대로 진행하는 경우
// 정방향 진행의 경우(자동 형변환)에도 명시해줘도 상관 없음
byte >> short/char >> int >> long >> float >> double

// 변환하고자 하는 타입을 ( ) 괄호 사이에 지정

// 데이터 손실이 발생하는 예제 01. 데이터 크기가 클 때
long sunnyLong = 1234567890L;
byte SunnyByte = (byte) sunnyLong; // sunnyByte는 722가 됨 → 데이터 손실

// 데이터 손실이 발생하는 예제 02. 데이터 타입이(실수/소수) 다를 때
double sunnyDouble = 1.9;
int Sunnyint = (int) sunnyDouble; // sunnyInt는 1이 됨 → 데이터 손실



String과 기본타입의 형변환

byte sunnyByte = 12;
int sunnyInt = 123;
long sunnyLong = 1234;
float sunnyFloat = 1.2f;
double sunnyDouble = 123.456;
String str = "";

// Byte ↔ String
str = Byte.toString(sunnyByte);
str = sunnyByte + "";
str = String.valueOf(sunnyByte);
sunnyByte = Byte.parseByte(str);

// Integer ↔ String
str = Integer.toString(sunnyInt);
str = sunnyInt + "";
str = String.valueOf(sunnyInt);
sunnyInt = Integer.parseInt(str);
sunnyInt = Integer.parseInt(str, 10); // 2번째 argument = 진법

// Long ↔ String
str = Long.toString(sunnyLong);
str = sunnyLong + "";
str = String.valueOf(sunnyLong);
sunnyLong = Long.parseLong(str);

// Float ↔ String
str = Float.toString(sunnyFloat);
str = sunnyFloat + "";
str = String.valueOf(sunnyFloat);
sunnyFloat = Float.parseFloat(str);

// Double ↔ String
str = Double.toString(sunnyDouble);
str = sunnyDouble + "";
str = String.valueOf(sunnyDouble);
sunnyDouble = Double.parseDouble(str);

// String → char
for (int i = 0; i < str.length; i++) {
   char sunnyChar = str.charAt(i);
   System.out.println(sunnyChar);
}