본문 바로가기
Java

[Java] 자바 형변환 (TypeCasting)

by Koojiny 2023. 2. 24.
해당 글은 인프런 '나도코딩의 자바 기본편' 강의를 바탕으로 정리한 내용입니다.

 

형변환 (TypeCasting)

형변환이란 자료형의 타입을 변경하는 것입니다.

예를 들면 "1004" 와 같은 숫자로 이루어진 문자열을 1004 와 같이 숫자형으로 바꾸는 것을 말합니다.

 

  • 정수형에서 실수형으로 변환
  • 실수형에서 정수형으로 변환
  • 숫자를 문자열로 변환
  • 문자열을 숫자로 변환

 

숫자끼리 변환

  • 정수형에서 실수형으로
// int to float & double
int score = 93;

System.out.println(score); // 93

System.out.println((float) score); // 93.0 => 실수형 float 형태로 변환되어 출력
System.out.println((double) score); // 93.0 => 실수형 double 형태로 변환되어 출력

 

 

  • 실수형에서 정수형으로
// float & double to int
float score_f = 93.3F; // float형 값을 저장
double score_d = 98.8; // double형 값을 저장

System.out.println((int) score_f); // 93 => float을 정수형 int 로 변환하여 출력
System.out.println((int) score_d); // 98 => double을 정수형 int 로 변환하여 출력

 

 

  • 정수 + 실수 연산
score = 93 + (int) 98.8; // 93 + 98
System.out.println(score); // 191

score_d = (double) 93 + 98.8; // 93.0 + 98.8  double 이 없어도 실수 계산이 가능
System.out.println(score_d); // 191.8

 

  1. score 변수를 선언
  2. 해당 변수에 정수 93와 실수 98.8을 (int)를 통해 형변환한 정수 98을 더한 값인 191을 저장
  3. score를 출력하게 되면 정수 191이 출력
  4. score_d도 동일하게 (double) 처리를 통한 값을 출력 (왜 191.8이 나오는지 위와 같이 고민해볼 것)

 

  • 변수에 형변환된 데이터 집어넣기 (범위가 커지는 경우)
double convertedScoreDouble = score; // 191 -> 191.0

// double로 선언된 변수 convertedScoreDouble에 score에 들어가있는 정수형 데이터를 집어넣어보자
// 문제없이 들어간다 (191에서 191.0으로 들어간다)

// int -> long -> float -> double (점점 범위가 커지는 경우에는 자동으로 형변환이 이루어진다)

 

 

  • 반대로 범위가 작아질 때 형변환된 데이터를 집어넣기
// int convertedScoreInt = score_d; // 에러 발생!!!
// 191.8 -> 191 에러 발생 이유? 큰 범위의 숫자를 작은 범위에 넣기 때문에 에러 발생

int convertedScoreInt = (int) score_d;
    
// double -> float -> long -> int (수동 형변환을 해주어야 에러가 나지 않고 정상적으로 저장이 된다)

 

 

숫자와 문자열 간의 변환

  • 숫자를 문자열로
// 1. String.valueOf(숫자)
// String 이라는 클래스가 제공해주는 valufOf() 기능을 사용하여 숫자 93을 문자형 "93"으로 변환

String s1 = String.valueOf(93);
System.out.println(s1); // 93

// 2. Integer.toString(정수)
// Integer 클래스가 제공해주는 toString 기능을 사용하여 정수 93을 문자형 "93"으로 변환

s1 = Integer.toString(93);
System.out.println(s1); // 93

------------------------------------------------

// 1. String.valueOf(숫자)

String s2 = String.valueOf(98.8);
System.out.println(s2); // 98.8

// 2. Double.toString(실수)
// 실수 98.8을 문자형 "98.8"로 변환

s2 = Double.toString(98.8);
System.out.println(s2); // 98.8

 

 

  • 문자열을 숫자로
// 1. Integer.parseInt("문자열")

int i = Integer.parseInt("93");
System.out.println(i); // 93

// 2. Double.parseDouble("문자열")

double d = Double.parseDouble("98.8");
System.out.println(d); // 98.8

// 3. 에러가 나는 이유는?
// "자바"라는 문자열이 들어갔기 때문에 정수형 변환을 할 수 없다
int error = Integer.parseInt("자바");
System.out.println(error);

'Java' 카테고리의 다른 글

[Java] 자바 상수 (Constants)  (0) 2023.02.23
[Java] 자바 변수 명명 규칙  (0) 2023.02.22
[Java] 자바 자료형과 변수  (0) 2023.02.21