작은 타입이 큰 타입으로 변하는 경우 자동변환 되는 것.
byte는 1바이트 크기에 인데 비해, int는 4바이트 크기이므로 promotion을 할 수 있다.
서로 다른 타입으로 연산하는 경우 동일한 타입으로 자동 변환됨.
public class Promotion{
public static void main(String[] args) {
int a = 5;
double b = 1.5;
System.out.println(a+b);
}
}
1.5는 8바이트 double 타입이고, 5는 4바이트 int타입이기 때문에 연산이 불가능함.
JAVA는 5를 8바이트 double타입 5.0으로 Promotion시켜 1.5 + 5.0으로 연산을 진행한다.
- 큰 타입이 작은 타입으로 변하는 경우 개발자가 강제로 진행해야 함
- 강제로 타입을 괄호() 안에 지정해 줌.
실수를 정수로 강제타입 변환하면 소수점은 모두 손실된다.
public class Casting {
public static void main(String[] args) {
double a = 1.9;
int b = (double) a;
}
}
변수 b에 저장되는 값은 소수점 이하 0.9가 손실된 1이 저장된다.
우리가 검색창에 '100'을 검색하면 숫자데이터 100 이 아닌 문자열 "100"으로 검색이 된다. 그것을 DB가 받아서 숫자인 값도 문자열인 값도 모두 사용자에게 보여줘야 하므로 문자열을 숫자데이터로 변환하는 것은 아주 중요하다.
public class ParseNumber {
public static void main(String[] args) {
String strScore = "100";
String strMoney = "1000000000";
String strGrade = "4.5";
}
}
만약 사용자가 100, 10000000000, 4.5 를 검색 받았다면 이것을 무조건 한 데이터로만 무작정 바꾸는게 아니라 데이터에 맞게 숫자데이터로 바꿔주는 것이 중요하다.
바꾸려고하는데이터타입 / 새로운변수명 = 바꾸려고하는데이터타입Fullname.parseDatatype / (바꾸려고 하는변수명) ;
복잡하지만 이런 공식으로 작성해주면 된다.
예제
public class ParseNumber {
public static void main(String[] args) {
String strScore = "100"; //int타입으로 바꿔준다.
String strMoney = "1000000000"; //long타입으로 바꿔준다.
String strGrade = "4.5"; //double타입으로 바꿔준다.
int score = Integer.parseInt(strScore);
long money = Long.parseLong(strMoney)
double grade = Double.parseDouble(strGrade);
System.out.println(score);
System.out.println(money);
System.out.println(grade);
}
}
이렇게 하면 String을 숫자데이터타입으로 변환 할 수 있다.
위와 반대로 숫자데이터를 문자열로 변환시켜 보겠다.
만약 100 이라는 Integer데이터를 문자열로 변경시키려면
public class{
public static void main(String[] args) {
int age = 100;
String strAge = String.valueOf(age);
System.out.println(strAge);
}
}
이렇게 하면 100을 "100"으로 변환할 수 있다.