들어가기 전에
자바에서 변수를 만들 경우에는 데이터 타입을 명시적으로 알려주어야 합니다.
그렇다면 이미 지정한 데이터 타입을 변경할 수는 없는 것일까요?
결론적으로, 변경할 수 있습니다. 이번 시간에는 데이터 타입을 변경하는 방법에 대해서 알아봅니다.
학습 목표
데이터 타입 변환 방법에 대해서 알아봅니다.
핵심 단어
- 데이터 타입 변환(Casting)
강의 듣기
들어가기 전에
자바에서 변수를 만들 경우에는 데이터 타입을 명시적으로 알려주어야 합니다.
그렇다면 이미 지정한 데이터 타입을 변경할 수는 없는 것일까요?
결론적으로, 변경할 수 있습니다. 이번 시간에는 데이터 타입을 변경하는 방법에 대해서 알아봅니다.
학습 목표
데이터 타입 변환 방법에 대해서 알아봅니다.
핵심 단어
강의 듣기
데이터 타입 변환
숫자 1을 2로 나누면 무엇일까요? 0.5일 것입니다.
그런데, 자바에서 정수 1을 정수 2로 나누어서 결과를 확인해 보면 우리가 아는 답이 나오지 않습니다.
원하는 답을 얻으려면 데이터 타입을 정수에서 실수로 변환하는 과정이 필요합니다.
그럼 어떻게 변환할 수 있을까요? 이번 시간에는 데이터 타입의 변환 방법에서 대해서 알아봅니다.
Data_and_operation 프로젝트에서 Casting 클래스를 생성합니다.
Casting.java
public class Casting {
public static void main(String[] args) {
double a = 1.1;
double b = 1;
double b2 = (double) 1;
System.out.println(b);
// int c = 1.1;
double d = 1.1;
int e = (int) 1.1;
System.out.println(e);
// 1 to String
String f = Integer.toString(1);
System.out.println(f.getClass());
}
}
정수와 실수 간에 변환하기
정수에서 실수로 변환하거나 반대로 하려면 어떻게 해야 할까요?
정수에서 실수로 변환하기 위해서 명시적으로 데이터 타입 변환을 나타낼 필요가 없습니다.
double b = 1;
이렇게 변수의 데이터 타입을 실수로 지정하는 것만으로도 변환이 가능합니다.
하지만 반대로 실수에서 정수로 변환할 경우에는 그렇지 않습니다.
int e = (int) 1.1;
실수 1.1을 정수로 변환하기 위해서는 데이터 타입을 명시적으로 변경해 주어야 합니다.
정수를 문자열로 변환하기
그렇다면 숫자를 문자열로 변환하려면 어떻게 해야할까요?
검색하면 방법이 다 있습니다.
String f = Integer.toString(1);
이렇게 Integer 객체의 toString 메소드를 이용하면 숫자를 문자열로 변환할 수 있습니다.
생각해보기
1) Casting에 대해서 알게 된 것을 댓글로 정리해 보세요.
2) 실수를 문자열로 변환하려면 어떻게 해야 할까요?
3) 정수 1과 정수 2를 나누었을 때 우리가 원하는 값이 나오게 하려면 어떻게 해야 할까요?
참고자료
https://www.w3schools.com
comment
1. 캐스팅= 데이터 타입변형시킴,캐스팅 자바에서 엄격하게 지키라고 하는 문자형, 실스형, 정수형의 체계를 효율적으로 지키게함
실수->정수
정수->실수
정수->문자 로 변환하게함
2. string f=inter.toString();
3. 정수1/정수2 하고 싶으면 실수형으로 바꾼다
java integer cannot be resolved 이라는 오류가 계속 뜨는데 어떻게 해야할까요 ㅠㅠ?
마지막 String f = Integer.toString(1); 이라는 코드에서 integer에 밑줄이 끄이구요,
JDK 라이브러리가 문제일까봐 버전도 확인해봤지만 JDK20으로 최신버전이였습니다
AI한테도 물어보고 구글에 서칭을 해도 나오는게 없네요 ㅠㅠ
데이터 타입을 변환시키는 것을 casting 이라 함.
실수를 int 로 선언하거나, 정수를 double 로 선언하는 등 변수가 나타내는 데이터 타입과 다른 타입의 데이터를 입력할 때 캐스팅이 발생할 수 있음
이런 변환 중 데이터에 손실이 없으면 자동적으로 변환이 이루어지지만, 만약 손실이 발생할 경우 에러가 발생하게 된다.
그래서 이렇게 데이터에 변형이 생길때는 명시적으로 변환한다는것을 나타내줘야함.
+ 모르는게 있으면 언제나 검색으로 코드를 찾아볼 것
1.Casting이란?
:현재 타입에서 다른 타입으로 값을 변환할 떄.
ex) int a =1의 값을 실수형 (즉,double 또는 float의 값으로 변환)으로 바꾼다면
double a1 = (double)1; or float a2 = (float)1f; <= 이는 명시적 변환
double a1 = 1 ; or flaot a2= 1f;
실수형에서 integer(정수형)으로 변환한다면 이 때는 강제적으로 변환해줘야 한다.
ex) double a = 3.141562; -> int a1 = (int)a //3으로 출력되며 소수점 아래값은 사라진다(값 손실).
2.정수형의 변수 값을 문자열(String)으로 변환한다면?
int z = 5;
String str = Integer.toString(5)
출력 값 : 5 (해당 값이 어떤 타입인지 확인하려면 => str.getClass()
1) Casting에 대해서 알게 된 것을 댓글로 정리해 보세요.
자바에서는 변수를 무엇으로 지정하는지가 중요한데 이 때 Casting을 통해 변수를 바꿔줘서 문제를 해결한다.
2) 실수를 문자열로 변환하려면 어떻게 해야 할까요?
Integer.toString
3) 정수 1과 정수 2를 나누었을 때 우리가 원하는 값이 나오게 하려면 어떻게 해야 할까요?
double 변수로 Casting하여 출력한다
int a= 1;
int b= 2;
//conversion of int to double
double a2 = a;
double b2 = b;
double c = a2/b2;
System.out.println(c);
1. 암시적 캐스팅과 명시적 캐스팅 구분을 컴파일러가 아주 잘 해준다.
2. .toString()
아스키코드를 참고하여 문자열로 표현한다.
3. 정수형 나누기 정수형의 결과는 정수형이기에 데이터를 잃어버림. 왜냐하면 정수형과 실수형은 애초에 처리하는 방식이 다르기에 정수형의 규칙대로 나누기 연산을 해서는 실수형 데이터를 얻을 수 없기 때문이다. 이럴때 그냥 컴파일러가 알아서 암시적으로 캐스팅하여 알아서 나누어 떨어지면 정수형으로 나누어떨어지지 않으면 실수형으로 변환해주면 좋겠지만, 컴파일러는 정수 연산을 보자마자 그것을 미리 계산하고 그런걸 하지 않는다. 또 다르게 의도적으로 필요한 사람이 있을수도 있다. (그냥 단순 정수 나누기 연산으로 몫을 구하는 코드를 짤수도 있다.)
방법은 나누는 수든 나누려는 수든 둘중에 하나는 더블형임을 선언해주면 컴파일러가 의도를 파악하여 두개를 모두 실수형으로 캐스팅하고, 중간에 나누기 연산자를 실수형의 규칙에 맞는 나누기 연산자로 인식하여 실수형 나눈결과를 반환해준다.
1) 손실이 일어날 경우 원하는 데이터 타입을 사용할 수 없는데 casting을 이용해서 명시적으로 바꾸면 사용할 수 있다.
2) String g = Double.toString(1.1);
3) double j = (double)1/(double)2;
1) 모든 자료형은 Casting이 가능하다.
2) Float.toString()사용
3) 변수를 float으로 하여 1과 2를 저장한 후 출력 때 float형태로 나오게 한다.
public class Casting {
public static void main(String[] args) {
floata=1;
floatb=2;
a/=b;
System.out.printf("%f",a);
}
}
int i = 1;
int l = 2;
double p = (double) i/ l;
System.out.println(p);
int u = 1;
int y = 2;
System.out.println((double)u / (double)y);
1) Casting에 대해서 알게 된 것을 댓글로 정리해 보세요.
형변환이 자바에서 가능하다는 것을 알게 되었다.
2) 실수를 문자열로 변환하려면 어떻게 해야 할까요?
Double.toString()함수를 이용한다.
3) 정수 1과 정수 2를 나누었을 때 우리가 원하는 값이 나오게 하려면 어떻게 해야 할까요?
형변환을 시켜 값을 계산하여야 한다.
1) 데이터 타입을 변환하는 것을 casting이라고 한다. 찾아보니 다운캐스팅, 업캐스팅이라는 것도 있었다.
2) 해당 객체의 toString() 메서드를 이용한다.
3) 0.5는 실수이므로 정수를 실수로 형변환한다.
1) 데이터 타입을 변활할 수 있다.
2) double a = 2.4; String b = Double.toString(a);
3)int a = 1;
int b = 2;
double c = (double)a / (double)b;
System.out.print(c);
1. Casting가 데이터 변환이란걸 알았다
2. String i = integer.toString (x); / String strI = String.valueOf(i)
3. (double)1/2
실수를 문자열로 변환하려면 어떻게 해야 할까요?
String g = Double.toString(1.0);
System.out.println(g); // 0.5(String)
정수 1과 정수 2를 나누었을 때 우리가 원하는 값이 나오게 하려면 어떻게 해야 할까요?
int h = 1;
int i = 2;
System.out.println((double) h / (double) i);
1) Casting에 대해서 알게 된 것을 댓글로 정리해 보세요.
casting은 데이터 타입을 변환하는 것이다.
정수 -> 실수 : 정수의 데이터 타입을 double로 지정
실수 -> 정수 : 데이터 타입 명시적으로 변경해야 함 (int)
정수 -> 문자열 : Integer.toString()
실수 -> 문자열 : Double.toString()
2) 실수를 문자열로 변환하려면 어떻게 해야 할까요?
Double 객체의 toString 메소드를 이용하면 변환할 수 있다.
3) 정수 1과 정수 2를 나누었을 때 우리가 원하는 값이 나오게 하려면 어떻게 해야 할까요?
System.out.println((double) 1/2);
1) 데이터 타입을 변환하는 것
정수를 실수로 나타내는 경우는 자동으로 변환됨
그러나 실수를 정수로 바꾸는 경우, 데이터의 손실이 있으므로 명시적으로 변경해야 함
2) Integer 객체의 toString 함수를 이용한다
3) 1번 방법 : 1.0/2.0
2번 방법 : (double) 1/2
1) int -> double 로 형변환 될때에는 자동으로 되지만 double -> int로 변환시켜 줄 때에는 소수점이 잘려 나가기 때문에 명시적으로 앞에 타입을 적어서 변환시켜 주어야 한다.
2) Double.toString() 을 이용한다.
3) int(정수)끼리 나눗셈을 하면 자바에서는 int(정수)형이 나오기 때문에 정확한 값을 구할 수 없다. 그러므로 앞에 (double)과 같이 실수형 데이터 타입을 명시적으로 작성하여 형변환을 해 줌으로써 원하는 값을 얻을 수 있다.
2) double.toString(1.1);
3) double a = (double)1/2
1) Casting에 대해서 알게 된 것을 댓글로 정리해 보세요.
데이터 타입을 숫자-문자, 실수-정수 등으로 바꿀 수 있다.
2) 실수를 문자열로 변환하려면 어떻게 해야 할까요?
double.toString()사용
3) 정수 1과 정수 2를 나누었을 때 우리가 원하는 값이 나오게 하려면 어떻게 해야 할까요?
변수 = (double)1/2 또는
변수 = 1/(double)2 등등
1. casting이란 데이터 타입을 변환해주는 것이다.
2. String f = Double.toString(1.4);
3.
int h = 1;
int i = 2;
double j= (double) h/i;
System.out.println(j);