

1. 변수(variable)와 상수
변수란?
단 하나의 값을 저장할 수 있는 메모리 공간
변수의 명명 규칙
식별자(identifier) : 프로그래밍에서 사용하는 모든 이름
식별자는 같은 영역 내에서 구분(식별)될 수 있어야 함
1. 대소문자가 구분되며 길이에 제한이 없다
2. 예약어를 사용해서는 안 된다
3. 숫자로 시작해서는 안 된다
4. 특수문자는 '_'와 '$'만을 허용한다
자바 프로그래머들에게 권장하는 규칙
1. 클래스 이름의 첫 글자는 항상 대문자로 한다
2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다
3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다
2. 변수의 타입
자료형(data type) : 값(data)와 종류(type)에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것
- 기본형(primitive type)
- 계산을 위한 실제 값(data)를 저장
- 논리형(boolean), 문자형 (char), 정수형(byte, short, int, long), 실수형(float, double) : 총 8개
- 참조형(reference type)
- 객체의 주소(memory address) 값을 저장
- 8개의 기본형을 제외한 나머지
참조 변수를 선언하는 방법
클래스이름 변수이름;
3. 기본형(primitive type)
- 논리형
- boolean
- true와 false 중 하나를 값으로 갖으며, 조건식과 논리적 계산에 사용됨
- 문자형
- char
- 문자를 저장하는데 사용되며, 변수 당 하나의 문자만 저장 가능
- 정수형
- byte, short, int, long
- 정수 값을 저장하는데 사용
- 주로 int와 long을 사용
- byte는 이진 데이터를 다루는데 사용, short는 C언어와의 호완성을 위해 사용
- 실수형
- float, double
- 실수를 저장하는데 사용
int는 CPU가 가장 효율적으로 처리할 수 있는 타입
1 byte | 2 byte | 4 byte | 8 byte | |
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
3.1. 상수와 리터럴(constant & literal)
상수(constant) : 변수와 마찬가지로 값을 저장할 수 있는 공간이지만, 변수와 달리 한 번 값을 저장하면 다른 값으로 변경할 수 없음
상수를 선언하는 방법 => 변수의 타입 앞에 final을 붙이기
상수는 반드시 선언과 동시에 초기화 해야 함
final int MAX_SPEED = 10; // 상수 MAX_SPEED를 선언 & 초기화
리터럴(literal) : 통상 표현하는 상수 대신 부르는 이름
- 변수(variable) : 하나의 값을 저장하기 위한 공간
- 상수(constant) : 값을 한 번만 저장할 수 있는 공간
- 리터럴(literal) : 그 자체로 값을 의미하는 것
int year = 2014; // 변수 : year, 리터럴 : 2014
final int MAX_VALUE = 100; // 상수 : MAX_VALUE, 리터럴 : 100
리터럴과 접미사
종류 | 접미사 |
논리형 | 없음 |
정수형 | L |
실수형 | f, d |
문자형 | 없음 |
문자열 | 없음 |
실수형 리터럴의 예
자료형 | 리터럴 | 다른 형태의 동등한 표현 |
double | 10. | 10.0 |
double | .10 | 0.10 |
float | 10f | 10.0f |
float | 3.14e3f | 3140.0f |
double | 1e1 | 10.0 |
double | 1e-3 | 0.001 |
4. 진법
4.1. 비트(bit)와 바이트(byte)
비트(bit, binary digit) : 한 자리의 2진수, 1 비트는 컴퓨터가 값을 저장할 수 있는 최소단위
바이트(byte) : 8bit, 데이터의 기본 단위
워드(word) : CPU가 한 번에 처리할 수 있는 데이터의 크기, CPU의 성능에 따라 워드의 크기는 달라짐
4.2. 음수의 2진 표현 - 2의 보수법
어떤 수의 n의 보수는 더했을 때 n이 되는 수
2의 보수 관계에 있는 두 2진수로, 절대값이 같고 부호가 다른 두 10진수를 표현하는 것을 2의 보수법이라 하며, 현재 대부분의 시스템이 2의 보수법으로 부호있는 정수를 표현
2의 보수 = 1의 보수 + 1
5. 기본형(primitive type)
논리형 - boolean
boolean형 변수에는 treu나 false 중 하나를 저장 가능
기본 값은 false
문자형 - char
char 타입 면수는 단 하나의 문자만을 저장 가능
변수에 문자가 저장되는 것이 아닌, 문자의 유니코드(정수)가 저장
A(문자) -> 65(코드) : 문자 인코딩
65(코드) -> A(문자) : 문자 디코딩
정수형 - byte, short, int, long
byte(1 byte) < short(2 byte) < int(4 byte) < long(8byte)
어떤 진법의 리터럴을 변수에 저장해도 실제로는 2진수로 바뀌어 저장
2진수가 저장되는 형식
- 정수형
- [S(부호비트)][ n - 1 비트]
- 0, 양수 : [0][ n - 1 비트]
- 음수 : [1][ n - 1 비트]
- [S(부호비트)][ n - 1 비트]
- 실수형
오버플로우(overflow) : 해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것
- 부호 있는 정수
- 2진수로 '0000'이 될 때 오버플로우 발생
- 부호 없는 정수
- 부호비트가 0에서 1이 될 때 오버플로우 발생
실수형 - float, double
실수형 : 실수를 저장하기 위한 타입
타입 | 정밀도 | 크기(bit) |
float | 7자리 | 32 |
double | 15자리 | 64 |
실수형에서 오버플로우가 발생하면 변수의 값은 '무한대'
실수형에서 언더플로우가 발생하면 변수의 값은 0
float의 표현 방식
[S(1)][E(8)][M(23)]
- S : 부호
- 양수면 0, 음수면 1
- E : 지수
- 부호있는 정수
- M : 가수
- 실제 값을 저장하는 부분
=> 10의 제곱을 곱한 형태로 저장
실수형은 오차가 발생할 수 있다는 단점이 있기에 정밀도(precision)이 중요한 요소
정밀도가 7자리 = 7자리의 10진수를 오차 없이 저장할 수 있음
따라서 실수형 값을 저장할 때 float 타입보다 높은 정밀도를 가지고 있는 double 타입을 사용
6. 형변환
형변환(캐스팅, casting) : 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
(타입)피연산자
정수형간의 형변환
- 큰 타입에서 작은 타입으로 변환
- 크기의 차이만큼 잘려나감
- 경우에 따라 값 손실(loss of data) 발생
- 작은 타입에서 큰 타입으로 변환
- 저장공간의 부족으로 잘려나가지 않음으로 값 손실이 발생하지 않음
- 빈 공간은 0 또는 1로 채워짐
자동 형변환
형변환을 생략했을 때, 컴파일러가 형변환을 자동적으로 추가
기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환
- boolean을 제외한 나머지 7개의 기본형은 서로 형변환이 가능
- 기본형과 참조형은 서로 형변환할 수 없음
- 서로 다른 타입의 변수간의 연산은 형변환을 하는 것이 원칙이지만, 값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략 가능
'study > Java의 정석' 카테고리의 다른 글
[Java의 정석] Chapter 6 객체지향 프로그래밍1 (0) | 2023.03.15 |
---|---|
[Java의 정석] Chapter 5 배열 (0) | 2023.03.07 |
[Java의 정석] Chapter 4 조건문과 반복문 (0) | 2023.03.07 |
[Java의 정석] Chapter 3 연산자 (0) | 2023.03.07 |
[Java의 정석] Chapter 1 자바를 시작하기 전에 (0) | 2023.03.02 |