ch2-3. 변수의 선언과 저장
1. 변수(Variable)란?
- 하나의 값을 저장할 수 있는 메모리 공간
- 클래스변수, 인스턴스변수, 지역변수 가 있음
- 지역변수는 읽기전에 꼭! 초기화 해야함 (ch6에서 계속)
2. 변수의 선언
1. 변수의 선언이유
- 값(data)을 저장할 공간을 마련하기 위해서
2. 변수의 선언 방법
int age; // 정수(int)타입의 변수 age를 선언
3. 변수에 값 저장하기
- 변수에 값 저장하기 ('='은 등호가 아니라 대입)
int age; // 정수(int)타입 변수 age 선언
age = 36; // 변수 age에 36 저장
int age = 36; // 위의 두 줄을 한 줄로
- 변수의 초기화 - 변수에 처음으로 값을 저장하는 것
- 지역변수는 읽기전에 꼭! 초기화 해야함 (ch6에서 계속)
int x = 0; // 변수 x를 선언 후, 0으로 초기화
int y = 5; // 변수 y를 선언 후, 5로 초기화
int x = 0, y = 5; // 위의 두 줄을 한 줄로
4. 변수의 값 읽어오기
- 변수의 값이 필요한 곳에 변수의 이름을 적는다.
int year = 0, age = 14;
year = age + 2000;
-> year = 14 + 2000;
-> year = 2014;
age = age + 1;
-> age = 14 + 1;
-> age = 15;
System.out.println(age);
-> System.out.println(15);
ch2-4. 변수의 타입
1. 변수의 타입
- 변수 : 하나의 값을 저장하기 위한 메모리 공간
- 하나의 변수에 모든 종류의 값을 저장할 수 있는것은 아님
- 변수의 타입은 저장할 값의 타입에 의해 결정 된다.
- ex) 정수 25, 만약 정수라고 타입 선언 후 3.14 라는 실수를 넣으면 에러가 발생
int age = 25;
- 저장할 값의 타입과 일치하는 타입으로 변수를 선언
char ch = '가'; // char는 문자 타입
double pi = 3.14 // double은 실수 타입
2. 값의 타입
- 문자 : char
- 숫자
- 정수 : byte, short, int, long
- 실수 : float, double
- 논리 : boolean
ch2-5. 변수, 상수, 리터럴
1. 변수(variable)
2. 상수(constant)
- 한번만 값을 저장 가능한 변수
- final을 사용한다
- 변경 X
- ex)
int score = 100; // score = 100
score = 200; // score = 200
final int MAX = 100; // MAX는 상수
MAX = 200; // 에러
3. 리터럴(literal)
- 그 자체로 값을 의미하는 것
- 상수와 같은 개념

ch2-6. 리터럴의 타입과 접미사
1. 리터럴 타입과 접미사
종류 |
리터럴 |
접미사 |
논리형 |
false, true |
없음 |
정수형 |
123,0b0101, 077, 0xFF, 100L |
L |
실수형 |
3.14, 3.0e8, 1.4f, 0x1.0p-1 |
f, d |
문자형 |
'A', '1', '\n' |
없음 |
문자열 |
"ABC", "123", "A", "true" |
없음 |
- ex)
```
boolean power = true;
char ch = 'A';
String str = "ABC";
byte b = 127; // int 타입 : -128~127
byte b - 128 // 에러
int i = 100; // 10진수
int oct = 0100; // 8진수
int hex = 0x100; // 16진수
long l = 10_000_000_000L; // int = 20억까지, 100억은 long
long l = 100;
float f = 3.14f; // f 생략불가
double d = 3.14d; // d 생략가능
```
2. 변수와 리터럴의 타입 불일치
- 범위가 '변수' > '리터럴' 인 경우, OK
int i = 'A'; // int > char
long l = 123; // long > int
double d = 3.14f; // double > float
- 범위가 '변수' > '리터럴' 인 경우, 에러
int i = 3_000_000_000; // int의 범위(약 20억) 벗어남
long l = 3.14f; // long(8byte) < float(4byte) : 실수형이 정수형보다 저장범위가 넓음
float f = 3.14; // float < double
- byte, short 변수에 int 리터럴 저장 가능
byte b = 100; // OK. byte의 범위(-128~127)에 속함
byte b = 128; // 에러. byte의 범위를 벗어남
ch2-7. 문자와 문자열
1. 문자와 문자열
- 문자(char)에는 빈 문자 X
- 문자열(String)에는 빈 문자열 O
- ex)
String s = ""; // 빈 문자열
- ex)
char ch = 'A'; // char : 문자 한개
char ch = 'AB'; // 에러
String s = "ABC"; // 문자열
String -> 자바에서 제공하는 클래스
String s1 = "AB";
String s2 = new String("AB"); // 위와 거의 같음 (차이는 9장에서 계속)
String s = "A";
String s = ""; // 빈 문자열
char ch = ''; // 에러 (char는 빈 문자열 X)
String s1 = "A" + "B"; // = "AB"
"" + 7 => "7"
"" + 7 + 7 => "7" + "7" => "77"
7 + 7 + "" => 14 + "" => "14"
- String 정의하는 방법의 차이는 9장에서 계속
ch2-8. 문자열 결합
- 문자열 + any type -> 문자열 + 문자열 -> 문자열
- ex) "" + 7 + 7 => "7" + "7" => "77"
- any type + 문자열 -> 문자열 + 문자열 -> 문자열
- ex) 7 + 7 + "" => 14 + "" => "14"
ch2-9. 두 변수의 값 바꾸기
-
두 컵에 담긴 물을 바꾸려면 새로운 빈 컵이 필요하다
-
ex)
int x = 10, y = 20;
x = y; // y의 값을 x에 저장
y = x; // x의 값을 y에 저장 // 틀린 방법
// 두 변수의 값 바꾸기
int tmp = x;
x = y;
y= tmp;
ch2-10. 기본형과 참조형
1. 값의 타입 (8가지)
2. 기본형과 참조형
1. 기본형(Primitive type)
- 오직 8개(boolean, char, byte, short, int, long, float, double)
- 실제 값을 저장
2. 참조형(Reference type)
- 기본형을 제외한 나머지(String, System 등) - 무수히 많음
- 메모리 주소를 저장(4byte 또는 8byte)
- ex)
Date today; // 참조형 변수 today를 선언
today = new Date(); // today에 객체의 주소를 저장 (new Date(); 로 객체 생성)
ch2-11. 기본형의 종류와 범위
▶ 논리형
- true와 false중 하나를 값으로 가지며, 조건식과 논리적 계산에 사용된다.
▶ 문자형
- 문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다.
▶ 정수형
- 정수 값을 저장하는데 사용된다. 주로 사용하는 것은 int와 long이며,
byte는 이진 데이터를 다루는데 사용되며,
short은 c언어와의 호환을 위해 추가되었다.
▶ 실수형
- 실수 값을 저장하는데 사용된다. float와 double이 있다.
종류 \ 크기 |
1 byte |
2 byte |
4 byte |
8 byte |
논리형 |
boolean |
|
|
|
문자형 |
|
char |
|
|
정수형 |
byte |
short |
int |
long |
실수형 |
|
|
float |
double |
기본형 표현범위
1. 2진수 표현
- 1 bit
- 2 bit
- n비트로 표현할 수 있는 값의 개수 = 2n개
- n비트로 표현할 수 있는 부호없는 정수의 범위 : 0~2n-1
- n비트로 표현할 수 있는 부호있는 정수의 범위 : -2n-1~2n-1-1
- ex)
8 bit => -27~27-1
27=128
1 byte => -128~127
2. byte 단위의 저장형태
byte b;
b = 3;
- = b = 00000011 이라는 1 byte 짜리 변수
1. byte(1byte = 8bit) = -27~27-1
- n비트로 표현할 수 있는 부호있는 정수
- S = 0 // 양수
- S = 1 // 음수
2. short(2byte = 16bit) = -215~215-1
3. char(2byte = 16bit) 0 ~ 216-1
- n비트로 표현할 수 있는 부호없는 정수
= char ch = 'A' = 65 =
4. int(4byte = 32bit) = -231~231-1
5. long(8byte = 64bit) = -263~263-1
6. float(4byte = 64bit) / double(8byte = 64bit)
- 실수 표현 범위
- E38 = 1038
자료형 |
저장 가능한 값의 범위(양수) |
정밀도 |
크기(bit) |
크기(byte) |
float |
1.4E-45 ~ 3.4E38 |
7 자리 |
32 |
4 |
double |
4.9E-324 ~ 1.8E308 |
15 자리 |
64 |
8 |
- float 1+8+23 = 32bit = 4byte
- 정밀도 = 가수의 자릿수
가수 M(23) -> 23 + 1(정규화) = 24자리
107 < 224 < 108
- double 1+11+52 = 64bit = 8byte
S(부호) |
E(11)(지수) |
M(52)(가수) |
---|