해당 글은 인프런 '나도코딩의 자바 기본편' 강의를 바탕으로 정리한 내용입니다.
형변환 (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
- score 변수를 선언
- 해당 변수에 정수 93와 실수 98.8을 (int)를 통해 형변환한 정수 98을 더한 값인 191을 저장
- score를 출력하게 되면 정수 191이 출력
- 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 |