본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다.
1. 변수 (Variable)
변수란?
- 하나의 값을 저장할 수 있는 메모리 공간
변수의 선언
- 타입 변수이름; 과 같은 방식으로 선언
ex)
int age;
double type;
…
⚠️ 주의 사항 : 예약어를 변수 이름으로 사용할 수 없다!!
ex) long, short, new, try, return, true, false
변수의 사용
변수 값 저장
- int score = 90;
2️⃣ 정수 타입 변수 ‘score’에 저장! ← 1️⃣ 90이라는 값을,
정수 리터럴
- 소수점이 없는 정수 리터럴은 10진수
0, 75 -100
- 0으로 시작되는 리터럴은 8진수
02, 04
- 0x 또는 0X으로 시작 or A,B,C,D,E,F 또는 a,b,c,d,e,f로 구성된 리터럴은 16진수
0x5, 0xA, 0XB3, 0xAC08
실수 리터럴
- 소수점이 있는 리터럴은 10진수 실수
0.25, -3.14
- E 또는 e가 있는 리터럴은 10진수 지수와 가수
5E7 //5 x 10^7
0.12E-5 //0.12 x 10^(-5)
문자 리터럴
- 작은 따옴표(’)로 묶은 텍스트는 하나의 문자 리터럴
‘A’, ‘한’, ‘\t’, ‘\n’
문자열 리터럴
- 큰따옴표(”)로 묶은 텍스트는 문자열 리터럴
“나는 Java 천재가 되고 말테야”
논리 리터럴
- true, false는 논리 리터럴
true, false
⚠️ 주의 사항 : 소문자는 꼭 지켜주셔야 합니다!!
ex) True, FALSE 안됩니다 ❌
변수값 읽기
- 변수는 초기화가 되어야 읽을 수 있다.
int value; //변수 value 선언 (초기화 안 됨)
int result = value + 10; //값이 초기화되지 않아 Error 발생!!
변수의 사용 범위
- 변수는 선언된 블록 내에서만 사용이 가능하다.
ex)
for (int i = 0; i< N; i++) {
..
.. // 변수 i가 사용될 수 있는 범위
..
}
2. 데이터 타입
기본 타입 (원시 타입)
- 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입
값의 종류
|
기본 타입
|
메모리 사용 크기
|
정수
|
byte
|
1 byte
|
|
char
|
2 byte
|
|
short
|
2 byte
|
|
int 🌟
|
4 byte
|
|
long
|
8 byte
|
실수
|
float
|
4 byte
|
|
double 🌟
|
8 byte
|
논리
|
boolean
|
1 byte
|
⚠️ 주의 사항 : int로 표현 가능한 정수 범위 → 약 ±21억
(생각보다.. 엄청나게 크지는 않다?)
char 타입에 대해서 자세히 알아보자!
- 자바는 모든 문자를 유니코드(Unicode)로 처리한다.
- 하나의 문자에 하나의 코드값 부여! (ASCII 코드 표)
- 즉, 아스키코드 값을 안다면 문자를 이용한 연산이 가능하다!
실수 타입을 저장하는 부동소수점 방식은 무엇일까?
- 실수 타입(float와 double)은 메모리에 1️⃣부호, 2️⃣가수, 3️⃣지수 값을 저장한다.
- float는 부호(1bit) + 지수(8bit) + 가수(23bit) = 32bit = 4byte
- double은 부호(1bit) + 지수(11bit) + 가수(52bit) = 64bit = 8byte
즉, 가수를 표현하는 데 있어서 double이 두 배 이상의 메모리를 사용하므로 더 정밀하다.
(실제로 저장되는 가수는 이진수로 나타낼 수 있는 가장 가까운 수여서 오차가 존재한다!)
3. 타입 변환
특정 데이터 타입을 다른 데이터 타입으로 변환하는 것!
자동 타입 변환 (묵시적 형변환)
- 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것
- 큰 크기 타입 = 작은 크기 타입 같은 상황에서 발생
◀️ 자동 타입 변환
- byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
(작은) 자동 타입 변환 ▶️ (큰)
연산식에서의 자동 타입 변환
int intValue = 10;
double doubleValue = 5.5;
double result = intValue + doubleValue;
위와 같은 경우, intValue의 값이 double 타입 값으로 변환되어 계산된다.
강제 타입 변환 (명시적 형변환)
- 강제적으로 큰 크기 타입을 작은 크기 타입으로 쪼개서 저장하는 것
- 작은 크기 타입 = (작은 크기 타입) 큰 크기 타입 과 같이 활용
◀️ 강제 타입 변환
- 작은 크기 타입의 범위 밖인 값의 경우, 원래 값이 보존되지 않는다!
연산식에서의 강제 타입 변환
int intValue = 10;
double doubleValue = 5.5;
int result = intValue + (int)doubleValue;
위와 같은 경우, doubleValue의 값이 int 타입 값으로 변환되어 계산된다.
'Study in SSAFY > 이것이 자바다' 카테고리의 다른 글
[이것이 자바다] 12.6 멀티스레드 - 스레드 상태 제어 (0) | 2022.09.12 |
---|---|
[이것이 자바다] 12.5 멀티스레드 - 스레드 상태 (0) | 2022.09.12 |
[이것이 자바다] 12.4 멀티스레드 - 동기화 메소드와 동기화 블록 (0) | 2022.09.12 |
[이것이 자바다] 11. 기본 API 클래스(Math~Formatting) (0) | 2022.08.10 |
[이것이 자바다] 10. 예외 처리 (0) | 2022.07.31 |