이 글은 유투브 생활코딩강의를 보고 내용을 정리한 것 입니다.
https://www.youtube.com/watch?v=4YE6dNqqEQ0&list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck&index=26
8bit = 1byte
1024 byte = 1kilobyte
1024 kilobyte = 1meagebyte
1024megabyte = 1gigabyte
데이터 타입을 필요에 따라서 메모리의 사용을 절약 할 수도있고, 더 큰 숫자를 표현 할 수있다.
예를 들어,
long a = 2147483647;
long b = 1;
위의 두 개의 숫자는 같지만, 같은 데이터 타입을 사용하고 있으므로 8byte를 사용하게 된다.
또 다른 예로
int a = 2147483647;
long b = 2147483647;
위의 두 개는 같은 숫자를 사용하지만 다른 데이터 타입을 사용하고 있으므로 변수b가 2배의 메모리를 사용하게 된다.
변수 a 와 2.2가 모두 실수인데, 오류가 발생한다.
변수 a의 type을 double로 바꾸어보자.
오류가 발생하지 않는다.
이것으로 보아, 2.2의 실수는 dobule을 Default로 갖는다는 것을 알 수 있다!
그렇다면 float의 데이터타입의 형식을 사용하기 위해서 어떻게 해야할까
실수 2.2 뒤에 f,F를 붙여주면 데이터타입이 float으로 바뀐다.
위의 코드도 오류가 뜨는데, 이유는 오른쪽 상수가 int형식의 값보다 1크기 때문이다.
오류를 해결하기 위해서 a의 데이터 타입을 long으로 바꿔보자.
여전히 오류가 발생하는데, 위의 float a = 2.2; 가 오류가 뜨는 원리와 비슷하다.
바로 오른쪽 변수의 Default 타입이 int형식이기 때문이다. 문제를 해결하기 위해서 상수뒤에 L을 붙여 주면 오류가 해결된다.
정수 200과 실수 200.0 을 비교하면 인간은 같은 값이라는 것을 쉽게 알 수 있다.
하지만 컴퓨터는 이를 다르게 받아들인다고 한다.
이렇게 형식이 다른 데이터들을 더하려면 한쪽의 데이터 타입을 다른 쪽의 데이터 타입으로 전환해야 한다고 한다.
자바 프로그램은 이러한 형변환을 자동으로 해주기도 하는데, 이러한 형 변환을 자동형 변환이라고 한다.
위와 같이 데이터 타입이 dobule인 변수 a에 3.0F의 상수를 담는데 오류가 발생하지 않는다.
그 이유는 dobule의 범위가 더 크기 때문에 3.0F의 값을 담을 수 있기 때문이다.
반대로 위와 같은 코드는 오류를 발생하는데, 오른쪽 상수 3.0의 Default 데이터타입은 double형이기 때문에, 값이 더 큰 타입을 작은 데이터타입에 담을 수 없기 때문에 오류가 발생한다.
자동형 변환이 적용되지 않는 경우에는 수동으로 형 변환을 해야한다.
이를 명시적이라고 한다.
위의 두 코드는 모두 오류가 발생하는데, 그 이유는 자동형변환이 이뤄지지 않기 때문이다.
오류를 해결하기 위해서 상수의 데이터 타입을 바꾸어보자.
데이터 타입과 형변환에 대해 글을 썼는데, 강의 중 설명한 말을 그대로 옮겨 적은 것 같다. 더 자세한 내용은 생활코딩님의 영상을 보는 것이 좋을 것 같다.