Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SQL
- Class
- dynamic programming
- Binary Tree
- Data Structure
- Counting
- hash table
- sorting
- 구현
- implement
- Math
- string
- Number Theory
- greedy
- Stack
- Matrix
- simulation
- bit manipulation
- array
- geometry
- Binary Search
- 코딩테스트
- Method
- 파이썬
- database
- 자바
- java
- Tree
- two pointers
- 코테
Archives
- Today
- Total
코린이의 소소한 공부노트
변수와 리터럴의 타입 일치/불일치 본문
1. 변수에 리터럴을 대입할 때 기본적으로 같은 타입의 리터럴을 대입한다.
boolean boo = true;
char c = 'A';
int i = 2;
long l = 10_0000_0000L; // 접미사 l 생략 가능
float f = 3.14f;
double d = 2.72; // 접미사 d 생략 가능
2. 변수의 범위가 리터럴의 범위보다 클 경우, 타입이 달라도 대입 가능하다.
int i = 'A';
// char는 문자를 숫자 코드로 바꿔서 저장한다.
// 'A'는 10진수로 표현하면 65
// 따라서 i에는 65가 저장된다.
long l = 10;
// long은 int보다 표현 가능한 정수의 범위가 크다.
// 즉, int 집합은 long 집합의 부분집합이다.
// 따라서 정수 리터럴을 long 변수에 대입해도 아무 문제가 없다.
double d = 2.72f;
// double은 float보다 표현 가능한 실수의 범위가 크다.
// 즉, float 집합은 double 집합의 부분집합이다.
// 따라서 float 리터럴을 double 변수에 대입해도 아무 문제가 없다.
3. byte와 short의 경우, int보다 범위는 작지만 int로 자동 변환되기 때문에 int의 리터럴을 쓴다.
byte b = 100;
// byte는 -128부터 127까지의 정수 표현 가능
b = 128;
// byte의 표현 범위를 벗어나므로 에러 발생
short s = 200;
// short은 -32,768부터 32,767까지의 정수 표현 가능
// int는 -21억부터 21억까지의 정수 표현 가능
4. 변수의 범위가 리터럴의 범위보다 작을 경우, 에러가 발생한다.
int i = 30_0000_0000;
// int의 표현 가능 범위를 벗어낫기 때문에 에러 발생
long l = 3.14f;
// 저장공간은 long이 8 byte, float이 4 byte로 long이 더 크지만,
// 정수보다 실수의 범위가 더 크므로 에러 발생
float f = 3.14;
// 우변은 접미사 d가 생략된 double 리터럴
// float보다 double의 범위가 더 크므로 에러 발생
'Java' 카테고리의 다른 글
printf()를 이용한 형식화된 출력 (0) | 2021.12.12 |
---|---|
문자와 문자열 (0) | 2021.12.08 |
변수, 상수(constant), 리터럴(literal), 접미사 (0) | 2021.12.07 |
변수 선언 & 명명 규칙 (0) | 2021.12.06 |
변수의 데이터 타입(data type) (0) | 2021.12.06 |