1. 변수 선언 규칙
- 반드시 숫자가 아닌 문자로 시작
- 공백 포함 불가, 특수기호는 $, _ 만 허용
- 자바에서 미리 지정한 예약어는 사용불가
- 공백 포함 불가
- 변수의 상수화 : final 키워드 + 변수명 대문자
- 예시 :
final double PI = 3.141592;
2. 데이터 타입
| 자료형 | 데이터 | 메모리크기 | 표현가능범위 |
|---|---|---|---|
| boolean | 참과거짓 | 1바이트 | true, false |
| char | 문자 | 2바이트 | 모든 유니코드 문자 |
| byte | 정수 | 1바이트 | -128 ~ 127 |
| short | 정수 | 2바이트 | -32768 ~ 32767 |
| int | 정수 | 4바이트 | -2147483648 ~ 2147483647 |
| long | 정수 | 8바이트 | 큰 정수(경을 넘김) |
| float | 실수 | 4바이트 | 큰 실수 |
| double | 실수 | 8바이트 | 더 큰 실수 |
- 5 : 정수형
- 5.0 : 실수형
- '5' : 문자형
- "5" : 문자열형
3. 실수 표현 방식
- 0과 1사이 실수만 해도 무한대이므로 표현이 어려우며, 사용자와 프로그램이 요구하는 값을 정확하게 제시할 수 없으므로 정밀도를 포기하고 표현가능한 데이터 값의 범위를 늘려놓음
- 자바가 값을 저장할 때도 공식에 따라 근사치로 저장, 꺼내서 쓸 때도 다시 공식에 따라 근사치로 꺼내서 사용함
4. 정수형은 무조건 int 사용?
- 데이터를 보관만 한다면 메모리를 적게 사용하는 데이터타입을 사용하는 것이 좋으나, 추가적으로 연산이 필요한 경우라면 int를 사용함
- 즉, byte, short, float은 연산이 필요없는 경우, 빠른 연산을 필요로 하지 않을 때 사용
▶ 연산과정
byte 10 + byte 10
//→ 00001010 + 00001010
//→ 연산할 때 4바이트(int 타입)으로 자동변환 (00000000 00000000 00000000 00001010)
//→ 더한 후 다시 1바이트(byte 타입)로 변환
//-- 같은 관점으로, 실수형은 float 대신, double을 기본적으로 사용. 그 이유는 float에 비해 double은 표현 범위가 더 넓어서 정밀도가 높으며 자바는 실수형을 double형식(8바이트)으로 저장하기 때문임
float a = 0;
double b = 0;
//100,000(십만) 번 반복
for (int i=1; i<=100000; i++)
{
a += 100000;
b += 100000;
}
// 결과 출력
System.out.println("float a : " + (a/100000));
//--==>> float a : 99996.055
System.out.println("double b : " + (b/100000));
//--==>> double b : 100000.0
5. 상수
- 자바는 변수를 선언하고, 상수를 변수에 넣을 때도 이 상수를 메모리공간에 저장함. 이후 상수가 쓸모가 없어지면 메모리공간과의 연결고리가 끊어짐
- 상수가 저장된 메모리 공간을 Garbage collector가 청소하는 시점에 소멸됨
6. 형 변환
int num1 = 10000000000 -> error
long num2 = 10000000000 -> error
//→ 우항의 정수를 자바가 int형으로 저장하기 때문에, int형의 범위를 초과하는 백억은 저장 불가
int num1 = 10000000000L -> error (데이터타입 맞지않음)
long num2 = 10000000000L -> 실행
//→ Long 타입을 의미하는 L을 붙이면 에러 나지 않음
float num1 = 3.14 -> error
float num1 = 3.14F -> 실행
//→ 우항의 실수를 자바가 double형으로 저장하기 때문에, 형 변환 필요
6-1. 자동 형 변환

6-2. 강제 형 변환(명시적 형 변환)
- 데이터 타입을 작은 데이터 타입으로 변환하거나, 두 가지 데이터 타입이 자동 변환될 수 없을 때 직접 지정하여 변환하는 것. 이 때 데이터의 일부 정보가 손실될 수 있으므로 주의
int a = 65;
char b = (char)b;
System.out.println(b); //A
7. 연산자
▶ 단항 연산자
| 연산자 | 의미 | 예시 |
|---|---|---|
| +, - | 양수, 음수 | |
| ++,-- | 증감연산자(1 증가, 1 감소) | ++a(전위연산) a++(후위연산) |
▶ 산술 연산자(이항 연산자)
| 연산자 | 의미 |
|---|---|
| + | 더하기 |
| - | 빼기 |
| * | 곱하기 |
| / | 나누기 (정수형 나누기에서 몫만 취하고 나머지 버림) |
| % | 나머지 (나머지를 취하고 몫은 버림) |
▶ 복합 대입 연산자(이항 연산자)
| 연산자 | 예시 | 의미 |
|---|---|---|
| += | a += 3 | a = a + 3 |
| -= | a -= 3 | a = a - 3 |
| *= | a *= 3 | a = a * 3 |
| /= | a /= 3 | a = a / 3 |
| %= | a %= 3 | a = a % 3 |
▶ 비교 연산자(이항 연산자)
| 연산자 | 예시 | 의미 |
|---|---|---|
| >, >= | a >= 3 | a가 3보다 크거나 같다 |
| <. <= | a <= 3 | a가 3보다 작거나 같다 |
| == | a == 3 | a가 3과 같다 |
| != | a != 3 | a가 3과 같지 않다 |
▶ 논리 연산자(이항연산자)
| 연산자 | 의미 |
|---|---|
| && | 연산자 기준 양쪽의 조건이 모두 참일 때 전체 결과 참 (AND) |
| || | 연산자 기준 양쪽의 조건 중 하나만 참이면 전체 결과 참(OR) |
▶ 조건 연산자(삼항 연산자)
(조건식 ? 값1 : 값2);
→ 조건식이 true일 때 값1이 처리되고, false일 때 값2가 처리됨
▶ 비트와 관련이 있는 연산자들
· 일반 연산자들보다 빠름(연산이 중첩되고 많아질수록)
| 연산자 | 의미 | 예시 | |
|---|---|---|---|
| & | 비트대상 AND | 1&1 → 1 | 1&0 → 0 |
| | | 비트대상 OR | 1|1 → 1 | 1|0 → 1 |
| ^ | 비트대상 XOR | 1^1 → 0 | 0^0 → 0 |
| ~ | 비트대상 NOT(피 연산자 모든 비트를 반전시킴) | ~11110101 → 00001010 |
· 비트 shift 연산자 : 비트열을 이동시키는 연산자
| 연산자 | 의미 | 예시 |
|---|---|---|
| << | 피연산자 비트열을 왼편으로 두 칸 이동 (남는자리에 0으로 채운다) | 00001010 → 00101000 |
| >>> | 피연산자 비트열을 오른편으로 두 칸 이동 (남는자리에 0으로 채운다) | 00001010 → 00000010 |
| >> | 피연산자 비트열을 오른편으로 두 칸 이동 (남는자리에 음수는 1로, 양수는 0으로 채운다) | 00001010 → 00000010 |
'Java' 카테고리의 다른 글
| [JAVA] Chapter 4. 배열 (0) | 2023.11.07 |
|---|---|
| [JAVA] Chapter 3-3. 이동 제어문 (0) | 2023.11.07 |
| [JAVA] Chapter 3-2. 제어문(반복문) (0) | 2023.11.07 |
| [JAVA] Chapter 3-1. 제어문(조건문) (0) | 2023.11.07 |
| [JAVA] Chapter 1. 자바의 특징과 기초 문법 (0) | 2023.11.06 |