변수와 리터럴의 타입 불일치

개발

 

1. 범위가 변수 > 리터럴 인 경우 OK

 

- 물건(리터럴)보다 그릇(변수)가 더 크기 때문에 가능하다

 

int i = 'A' ;           // int > char 

 

65 코드가 변수 i에 저장되는 것이고

 

캐릭터 타입 char 보다 Int 타입이 더 크기때문에 가능하다

 

long 1 = 123 ; // long > int  도 마찬가지로 int타입보다 더 큰 long 타입이라 가능하다

 

double d = 3.14f ; // double > float 

 

더블 타입이 범위가 float보다 크기 때문에 가능하다

 

 

 

 

2. 범위가 변수 < 리터럴 인 경우에는 에러가 생긴다

 

 

그릇보다 물건이 크기 때문이다

 

 

int i = 30,0000,0000;         //         int 범위가 +- 20억 벗어남

 

long 1 = 3.14f ;         // long < float 

 

롱타입 8byte float 타입 4byte -- >   괜찮을 것 같지만 실수형은 정수형보다 저장범위가 훨씬 넓기 때문에 에러가 발생한다

 

 

 

float f = 3.14;          //  float < double 

 

 

3.14에 접미사 d 가 생략된 것으로 실제로는 3.14d이고 (실수형 리터럴의 접미사가 없으면 d가 생략된 것) 

 

더블타입의 변수를 플로트 타입의 변수에 저장하려고 하기 때문에 결론적으로 에러가 발생한다

 

 

3. byte, short 타입의 리터럴은 없기 때문에 int 리터럴을 사용한다

 

단, 변수의 타입의 범위 이내이어야 함 

 

 

byte b = 100; // OK byte 범위 -128~127 에 속함

byte b = 128; // 에러. byte의 범위를 벗어남

 

 

 

 

 

배운 내용의 실습 

 

 

 

 

 

 

< 정리 >

 

 

 

 

float f = 3.14f 에서 f는 생략이 불가능하지만

double d = 3.14에서 d는 생략이 가능하며 3.14f로 작성도 가능한데 그 이유는 더블타입이 더 그릇이 크기때문에 작동한다

 

long 타입에서 100억 단위로 올라가는 값을 넣을때는 뒤에 알파벳 l 을 붙여줘야하는데 1과 l 이 비슷하게 보이므로 

대문자 L을 넣어주는게 좋다

 

byte 타입 사용시 값의 범위안에 들어오지 않으면 에러가 발생한다 ( -127~128 ) 

 

 

 

 

이번 챕터를 공부하면서 중간중간 스페이스바 눌러가면서 이해하려고 노력을 많이 했다

 

사실 비전공자가 아니라서 라는 프레임을 스스로 자꾸 만들기는 하지만

 

확실히 이해하는 속도가 더딘 것 같다

 

더 시간을 쓰는 수 밖에는 없다

 

당장 다음주부터 수업시작이니까 조금 더 열심히 준비해서 

 

버벅대지않고 진도를 맞춰나가도록 노력해보자

 

그럼 20000