02. 자동타입변환(Promotion)과 강제타입변환(Casting) [ JAVA ]

duck-ach·2022년 7월 19일
0

JAVA

목록 보기
2/27

자동 타입 변환 (Promotion)

작은 타입이 큰 타입으로 변하는 경우 자동변환 되는 것.


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으로 연산을 진행한다.

강제 타입 변환 (Casting)

  • 큰 타입이 작은 타입으로 변하는 경우 개발자가 강제로 진행해야 함
  • 강제로 타입을 괄호() 안에 지정해 줌.

실수를 정수로 강제타입 변환하면 소수점은 모두 손실된다.

public class Casting {
	public static void main(String[] args) {

	double a = 1.9;
    int b = (double) a;
    
    }
}

변수 b에 저장되는 값은 소수점 이하 0.9가 손실된 1이 저장된다.

문자열을 숫자데이터로 변환하기 (String → Number Data)

우리가 검색창에 '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"으로 변환할 수 있다.

profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글