타입 변환

zooyeong·2023년 2월 4일

1주차

목록 보기
3/5
post-thumbnail

📌타입 변환(형변환)

타입 변환이란 데이터를 다른 타입으로 변환하는 것이다.

💡타입 변환의 종류

✅자동(묵시적) 타입 변환 : Promotion
✅강제(명시적) 타입 변환 : Casting

타입 변환의 종류에는 위의 두 가지가 있다. 아래에서 자세히 살펴보겠다.


자동(묵시적) 타입 변환 : Promotion

int num1 = 123;
double num2 = 123.4;
		
num2 = num2 + num1; //246.4
//저장공간 = 123.4 + 123; //실수형+정수형=실수형
//실행 도중 작은 타입(정수형)이 큰 타입(실수형)으로 자동 타입 변환했다.

위 코드가 자동 타입 변환의 예이다.

실수형이 정수형보다 타입이 크므로 실수형으로 변경된다는 것을 알 수 있다.

💡타입별 크기 순서

byte < short < int < long < float < double

타입별 크기 순서인데 여기서 주의할 점은,

float은 표현 범위가 더 크기때문에 정수형보다 큰 타입으로 들어간다는 것이다!


강제(명시적) 타입 변환 : Casting

int num1 = 123;
double num2 = 123.4;
int num3 = num1 + (int)num2; //123 + 246;
				//변수 앞에 (int)를 붙여 double을 int형으로 강제 변환했다. 
System.out.println(num3); //369
		
double num5 = 3.6;
double num6 = 5.5;
int result = (int)num5 + (int)num6;
				// 3		5
System.out.println(result); // 8
int result2 = (int)(num5 + num6);
			//(int)(9.1)
            //9

위 코드는 강제 타입 변환의 예이다.

큰 타입은 작은 타입으로 자동 타입 변환을 할 수 없으므로 필요하다면 강제 타입 변환 해주어야한다.
(변수 앞에 타입을 붙여 변환할 수 있다.)

💡값의 손실

이 때, 원래 값은 보존되지 않으므로 값손실이 발생한다.

double num2를 int형으로 변환할 때 소수점 아래는 버려지고 정수만 저장되므로 값손실이 발생한다.

강제 타입 변환할 때는 값의 손실이 발생하지 않도록 주의해서 사용하자!


📌문자열 변환

💡 String.valueOf();

int intScore1 = 100;
String strScore1 = intScore1 + ""; //문자열을 만나 문자열화됨
String strScore2 = String.valueOf(intScore1); //괄호 안을 문자로!
		
System.out.println(intScore1); //100
System.out.println(strScore1); //"100"
System.out.println(strScore2); //"100"

정수를 문자열로 변환하는 방법이다.

데이터는 문자열을 만나면 문자열화되므로

strScore1처럼 문자열을 붙여서 변환할 수 있다.

메소드를 사용할 수도 있다.

String.valueOf();

이 메소드는 문자열로 변환하고 싶은 int, double, boolean형 등을 괄호 안에 넣으면 된다.

그럼 strScore2와 같이 문자열로 변환된다.

💡 Integer.parseInt();

String strScore2 = "80";
String strScore3 = String.valueOf(90); //"90"

int intScore2 = Integer.parseInt(strScore2); //"80" -> 80
int intScore3 = Integer.parseInt(strScore3); //"90" -> 90
System.out.println(intScore2 + intScore3); //170

Integer.parseInt(); 는 괄호 안에 정수로만 구성된 문자열이 들어와야 오류가 발생하지 않는다.

예를 들어 괄호 안에 "80abc"와 같은 문자열을 넣으면 런타임 에러가 발생한다!

💡 Double.parseDouble();

double dbGrade1 = 3.5;
String strGrade1 = "3.5";
		
double dbGrade2 = Double.parseDouble(strGrade1);
//"3.5" -> 3.5
String strGrade2 = String.valueOf(dbGrade1); //3.5
System.out.println(dbGrade2); //3.5
System.out.println(strGrade2); //"3.5"

Double.parseDouble();도 괄호 안에 실수로만 구성된 문자열을 넣어야한다.

💡 Boolean.parseBoolean();

boolean bl = true;
String strBl = String.valueOf(bl);
		
String strBl2 = "false";
boolean bl2 = Boolean.parseBoolean(strBl2);
System.out.println(strBl); //"true"
System.out.println(bl2);  //false

Boolean.parseBoolean();은 괄호 안에 true나 false 불린 타입의 문자열만 들어올 수 있다!


(교재 : 이것이 자바다/저자 신용권)

profile
Have a good day ⌯’▾’⌯

0개의 댓글