1. 변수란?
- 데이터의 저장과 참조를 위해 할당된 메모리 공간.
- 결국 변수를 선언해서 데이터를 저장하고, 그 변수를 이용해 이리저리 써먹는것이 코딩의 기본.
2. 프로그래밍에서의 실수
- 소수점 이하의 값이 존재하는 숫자
3. JAVA의 기본 자료형(Primitive data type)
자료형 | 메모리 크기 | 데이터 |
bool | 1 바이트 | true or false |
char | 2 바이트 | 모든 유니코드 문자 |
byte | 1 바이트 | 정수 |
short | 2 바이트 | 정수 |
int | 4 바이트 | 정수 |
long | 8 바이트 | 정수 |
float | 4 바이트 | 실수 |
double | 8 바이트 | 실수 |
4. 정수의 표현 방식
- " 몇 바이트로 정수를 표현할 것인가? " -> 정수는 1,2,4,8바이트로 표현할 수 있다.
정수의 부호 | 컴퓨터의 표현 방식 |
양 |
가장 왼쪽에 존재하는 비트는 부호를 나타냄. 나머지 비트는 데이터의 양적인 크기를 나타냄 |
음 |
양의 정수 값에 "2의 보수"를 취하면 그것이 양의 음의 정수가 된다.
*2의 보수하는법 1. 1의 보수를 구한다.( 0과 1을 바꿔준다) 2. 1을 더한다 3. N바이트의 계산 결과는 N바이트 이므로, 올림 수는 그냥 버린다. |
5. 실수의 표현 방식.
- 실수의 계산에는 오차가 존재할 수 밖에 없다. 왜? 표현할 수 있는 값의 범위를 넓히고, 정미롣를 포기했기 때문에.
6. 정수 자료형의 이해
- 정수 자료형에는 byte, short, int, long이 있다.
- 정수 자료형을 선택할 때는 데이터가 쓰이는 곳이 "연산" 중심인지, "데이터 그 자체" 중심인지 파악하자.
질문 | 답변 |
메모리 공간만 보면 33+22 연산은 2바이트 정수로도 표현할 수 있으니 short 자료형을 쓰는게 더 좋은 코드 아닌가요? |
아닙니다! 왜? 일반적으로 CPU는 int형 정수연산을 "가장 고속으로 처리하게끔" 설계 되어 있기 때문입니다. 따라서 자바는 "정수형 연산"을 진행할 때, 모든 피연산자를 int형으로 변환하는 과정을 거칩니다. (하지만 int형보다 큰 long에서는 데이터 손실이 일어나기 때문에 형 변환이 일어나지 않습니다.) |
그럼 byte랑 short는 왜 있음? |
근데 위의 경우는 "연산"에 촛점을 맞춘 경우이고, 연산 보다는 "데이터 그 자체"에 더 집중해야할 때가 있다.
예를 들어, 게임 메쉬의 3차원 좌표들은 연산보다는 데이터 자체가 의미가 더 크기 때문에 byte, short, float이 쓰인다. |
7. 실수 자료형의 이해
- 실수 자료형에는 float, double이 있다.
- 실수 자료형을 선택할 때는 정밀도에 있다.
- 애초에 실수는 폭을 넓히고 정밀도를 줄였는데, 실수를 표현하는데 사용되는 바이트 수가 많아질수록 오차가 줄어든다. 따라서 표현하고자 하는 값이 요구하는 정밀도를 기준으로 자료형을 선택한다.
- 근데 기본적으로 오차는 항상 발생한다.
8. e(E) 표기법
- JAVA는 소수부가 큰 실수 표현의 편의를 위해 e표기법을 지원한다.
- e(+-)n을 10의 (+-)n승으로 표현하는 것이다.
9. 문자 표기법의 이해
- 하드웨어는 기본적으로 오로지 숫자만을 인식하고 표현할 수 있는 장치이다.
- 따라서 문자를 숫자로 표현하는 몇몇 표준이 만들어졌는데, JAVA는 이중에서도 "유니코드" 표준을 사용한다.
- 유니코드는 문자 하나를 2바이트로 표현하는 문자체계이다.
- JAVA는 유니코드 지원으로 인해 한글을 영어, 일본어 등등과 동일한 수준으로 컨트롤 할 수 있다!
- 문자는 char num1 = 'Hyunndy_블로그' 처럼 작은 따옴표로 표현되고, 실제로 저장되는건 문자의 유니코드 상수 값이다.
'Deperecated > JAVA' 카테고리의 다른 글
JAVA관련 토막 지식. (0) | 2019.12.19 |
---|---|
JAVA 기본서 공부 - 4 <연산자> (0) | 2019.12.19 |
JAVA 기본서 공부 -3 <상수> (0) | 2019.12.19 |
Java 기본서 공부 - 1 <자바 개발환경> (0) | 2019.12.15 |
Java와 C++의 차이점. (0) | 2019.12.15 |