데이터 형 변환이란 프로그램 실행 중에 연산과 같은 작업을 통해서 기존의 데이터 형에서 새로운 데이터 형으로 변경되는 것을 말한다.
처음엔 크게 중요하다고 느끼지 않았었는데
java에서는 변수마다 데이터 형을 지정하고 지정한 데이터 형과 작성한 프로그램?이 서로 맞지 않으면 곧바로 에러가 떠버리기 때문에..🥲
한 번 다시 정리할 필요성을 느꼈다.게다가 생각보다 유도리 있게 형 변환을 사용하는 경우도 많기도 하고
1. 묵시적 형 변환
(1) byte -> short -> int -> long -> float -> double : 작은 타입에서 큰 타입으로
byte타입인 10이 short 타입인 b2에 저장이 되면 short타입으로 변경된다.
byte b = 10;
short b2 = b;
int b3 = b2;
long b4 = b3;
float b5 = b4;
double b6 = b5;
System.out.println(b6); //10.0
String은 예외로 한다.
String은 클래스니까!
(2) char -> int : 문자형에서 정수형으로
char은 하나의 문자를 저장하지만 내부적으로는 수치형이다.
'A' 문자를 저장할 때 아스키코드 값인 '64'로 저장되며, 연산 시 자동으로 정수형으로 변환된다.
정수형인 num 변수에 c를 저장하면 char형인 'A'가 자동으로 int 형 65로 변환되어 저장되고 num을 출력하게 되면 65가 출력된다.
char c = 'A';
System.out.println(c+1); //66
int num = c; //char이었던 c를 int num에 저장
System.out.println(num); //65
(3) int보다 작은 타입의 연산 결과는 int로 묵시적 변환
다음과 같이 short타입끼리의 연산도 연산 결과는 자동으로 int타입으로 변환된다.
따라서 연산 결과를 short 타입의 변수에 저장하려고 하면 오류가 발생한다.
short x = 10;
short x2 = 20;
//short x3 = x + x2; //오류
int x3 = x+x2; //연산 결과를 int타입 안에 넣어줌
(4) 정수형과 실수형의 연산 => 실수형으로 변환
정수와 실수를 연산하면 결과는 실수형으로 자동 형 변환되어 저장된다.
int p = 100;
double p2 = 3.14;
double p3 = p + p2;
//아래 두개 중 어떤 방법으로 출력해도 실수인 double형으로 값이 나온다.
System.out.println(p + p2); //103.14
System.out.println(p3); //103.14
(5) 문자열 + 문자열이 아닌 데이터 => 연결된 문자열로 반환
문자열은 연산할 수 없다.
문자열에 함께 쓰인 '+'는 문자열로 이어붙인다는 의미이며 String타입이 아닌 데이터도 자동으로 형 변환되어 연결된 문자열이 된다.
첫 번째 예시는 왼쪽부터 문자열 "10"에 1,2,3을 이어붙인 "10123"이 출력되며,
두 번째는 왼쪽부터 1+2+3이 6으로 연산된 후에 문자열 "10"과 이어붙인 "610"이 출력된다.
System.out.println("10" + 1 + 2 + 3); //10123
System.out.println(1 + 2 + 3 + "10") //610
2. 명시적 형 변환
(1) 큰 타입에서 작은 타입으로
앞서 작은 타입에서 큰 타입으로 자동 형 변환이 되는 것을 확인했는데,
이와 달리 큰 타입의 데이터를 작은 타입으로 저장하고 싶을 때에는 명시적으로 데이터 형을 변경해야 한다.
다음과 같이 int형 10을 short에 저장하고 싶을 때,
괄호 안에 데이터 형을 명시하여 데이터 형을 변경할 수 있다.
int n = 10;
short n2 = (short)n;
(2) 문자열에서 정수형 또는 실수형으로
Integer.parseInt 함수로 문자열을 정수형으로 변환할 수 있고, Double.parseDouble 또는 Float.parseFloat 함수로 실수형으로 변환할 수 있다.
String k = "10";
System.out.println(k + 20); //1020
int k2 = Integer.parseInt(k); //정수형으로 변환
System.out.println(k2 + 20); //30
dkuble k3 = Double.parseDouble(k); //실수형으로 변환
System.out.println(k3); //10.0
(3) 문자열로 변환
String.valueOf 함수를 사용하면 문자열이 아닌 데이터를 문자열로 변환할 수 있다.
System.out.println(String.valueOf(10) + 10)); //"1010"
System.out.println(String.valueOf(3.14)); //"3.14"
'📁 Language > ☕ JAVA' 카테고리의 다른 글
[JAVA] 클래스 (1) | 2024.02.28 |
---|---|
[JAVA] 배열 (0) | 2024.02.20 |
[JAVA] 자바 문자열(String) 함수 (0) | 2024.02.15 |
[JAVA] 자바 출력 함수 (print, println, printf) (2) | 2024.02.15 |
[JAVA] 국영수 점수 받아 총점, 평균 구하여 출력하기 (0) | 2024.02.15 |