2장
1. 변수, 상수, 리터럴 그리고 키워드
변수(variable): 하나의 값을 저장하기 위한 공간
상수(constant): 값을 한 번만 저장할 수 있는 공간
리터럴(literal): 그 자체로 값을 의미
키워드(keyword): 자바에서 정한 예약어
1.1. 변수, 리터럴 그리고 키워드의 타입
숫자
int(기본형) long
정수(integer)를 저장하기 위한 타입
float double
실수(floating-point number)를 저장하기 위한 타입 (float은 오차없이 7자리, double은 15자리)
문자
char
문자(character)를 저장하기 위한 타입
string
여러 문자(문자열, string)을 저장하기 위한 타입
리터럴의 타입
종류
리터럴
접미사
논리형
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"
없음
키워드의 타입
분류
키워드
기본 자료형
boolean, byte, char, short, int, long, float, double
접근 지정자
private, protected, public
클래스 관련
class, abstract, interface, extends, implements
객체 관련
new, instanceof, this, super, null
메서드 관련
void, return
제어문
if, else, switch, case, default, for, do, while, break, continue
논리 값
true, false
예외 처리
try, catch, finally, throw, throws
기타
transient, volatile, package, import, synchronized, native, final, static, strictftp
사용되지 않음
goto, const
1.2. 예제
/*
변수의 선언 및 저장
*/
// 키워드: int, x: 정수형 변수, 100: 정수 리터럴
int x = 100;
// 키워드: double, pi: 실수형 변수, 3.14: 실수 리터럴
double pi = 3.14;
// 키워드: char, ch: 문자형 변수, 'a': 문자 리터럴
char ch = 'a'; // 1개 문자 저장
// str: 문자열형 변수, "abc": 문자열 리터럴
String str = "abc" // 여러 문자(0~n개) 저장, 빈 문자열 허용
/*
상수의 선언 및 저장
*/
// 키워드: final/int, MAX_SPEED: 정수형 상수, 10: 정수 리터럴
final int MAX_SPEED = 10;
// 값이 저장된 상수에 다시 값을 할당하면 에러
MAX_VALUE = 20;
2. 기본형과 참조형
기본형(Primitive type): 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 8개 타입
참조형(Relative type): 기본형을 제외한 나머지 타입으로 객체의 주소 저장.
2.1. 기본형의 크기
논리형
boolean
문자형
char
정수형
btye
short
int
long
실수형
float
double
2.2. 기본형이 저장 가능한 값의 범위
MathJax.Hub.Config({ tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]} });
bit
btye
boolean
false, true
8
1
char
'₩u0000' ~ '₩uffff' ($2^{16}-1$, 0 ~ 65535)
16
2
byte
-128 ~ 127 ($2^7$ ~ $2^7-1$)
8
1
short
-32,768 ~ 32,767 ($-2^{15}$ ~ $2^{15}-1$)
16
2
int
-2,147,483,648 ~ 2,147,483,647 ($-2^{31}$ ~ $2^{31}$, 약 $\pm$ 20억)
32
4
long
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 ($-2^{63}$~$2^{63}-1$)
64
8
float
-3.4E38 ~ 3.4E38 ($-3.4x10^{38}$ ~ $3.4x10^{38}$)
32
4
double
-1.8E308 ~ 1.8E308($-1.8x10^{308}$ ~ $1.8x10^{308}$)
64
8
3. 오버플로우
오버플로우: 연산 과정에서 특정 타입이 표현할 수 있는 값의 범위를 넘어서는 경우
MathJax.Hub.Config({ tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]} });
65536개 ($2^{16}$개)
0 (1개)
최소값 → 0
0000 0000 0000 0000
0
0 (1개)
양수 ($2^{16}-1$개, 65535개)
0000 0000 0000 0001
1
양수 ($2^{15}-1$개, 32767개)
...
...
...
32766
0111 1111 1111 1110
32766
32767
0111 1111 1111 1111
32767 ← 최대값
32768
1000 0000 0000 0000
-32768 ← 최소값
양수 ($2^{15}$개, 32768개)
32769
1000 0000 0000 0001
-32767
...
...
...
65534
1111 1111 1111 1110
-2
최대값 → 65535
1111 1111 1111 1111
-1
4. 문자열 결합, 타입 변환 그리고 화면 입출력
4.1. 문자열 결합
// int = int + int
System.out.println(1 + 2); // 3 출력
// int = int + char
System.out.println('1' + 2); // 51 출력
// int = char + char
System.out.println('A' + 'B'); // 131 출력
System.out.println('1' + '2'); // 99 출력
// String = boolean/char/String + String
System.out.println(true + ""); // true 출력
System.out.println('J' + "ava"); // Java 출력
System.out.println("1" + "2"); // 13 출력
// error = boolean + null
System.out.println(true + null); // 에러
4.2. 타입 변환
문자 숫자
문자에서 '0'을 뺀다.
'3' - '0' → 3
숫자 문자열
숫자에 빈 문자열("")을 더한다.
3 + "" → "3"
문자열 숫자
Integer.parseInt() 또는 Double.parseDouble()을 사용한다.
Integer.parseInt("3") → 3 Double.parseDouble("3.14") → 3.14
문자열 문자
charAt(0)을 사용한다.
"3".charAt(0) → '3'
문자 문자열
빈 문자열("")을 더한다.
'3' + "3" → "3"
4.3. 화면 입출력
출력
괄호 안의 내용을 출력 줄바꿈 없음
괄호 안의 내용을 출력 줄바꿈
괄호 안의 내용을 지정된 형식에 따라 출력
%d
10진(decimal) 정수 형식으로 출력
%x
16진(hexa-decimal)정수 형식으로 출력
%f
부동 소수점(floatiing-point) 형식으로 출력
%c
문자(character)로 출력
%s
문자열(string)로 출력
참고 자료
자바의 정석 - 도우출판
Last updated