개요
자바의 정석 연습문제를 처음부터 풀어보며 모르거나 헷갈리는 기본 개념을 확실히 익히고자 한다.
연습문제를 풀이하는 것이 아닌 내가 공부하면서 중요하다고 생각하거나 잘 몰랐던 개념을 기록할것이다.
문제
[2-3] : 리터럴, 변수, 상수, 키워드의 개념
1. 리터럴 (literal) : 소스 코드 내에서 직접 입력된 값, 종류에 따라 정수, 실수, 문자, 논리 리터럴로 나뉜다.
이는 상수 (constant) 와 같은 의미지만, 상수는 한 번 저장하면 변경할 수 없는 변수로 정의하다는 점에서 구분된다.
2. 변수 (variable) : 변수는 값을 저장할 수 있는 메모리의 공간을 의미한다. 이는 프로그램 내에서 수시로 값이 변경될 수 있다. 또한 변수에는 복수 개의 값이 아닌 하나의 값만 저장할 수 있다. 변수 이름을 통해 메모리 주소에 접근한다.
3. 상수 (constant) : 리터럴로써 프로그램이 실행되었을 때 변경할 수 없는 변수를 말한다. 'final' 키워드를 사용할 수 있다.
4. 키워드 (keyword) : 프로그램 내에서 사용 가능한 예약어이다. 이는 변수명으로 사용할 수 없다. 또한 Java 는 대소문자를 구분하며, 키워드는 모두 소문자이다.
예시)
int i = 100;
long l = 100L;
final float PI = 3.14f;
- 리터럴 : 100, 100L, 3.14f
- 변수 : i, l
- 상수 : PI
- 키워드 : int, long, final, float
[2-4] 기본형 (primitive type)
모든 변수에는 타입 (type:형) 이 있으며 기본타입과 참조타입이 있다.
1. 기본 (원시 : primitive) 타입 : 정수, 실수, 문자, 논리 리터럴을 직정 저장하는 타입이다.
=> byte, char, short, int, long, float, double, boolean 이 있다.
2. 참조 (reference) 타입 : String, 배열, 클래스 등 값을 직접 저장하지 않고 클래스를 만들어 메모리 주소를 참조한다.
=> 모든 참조 타입은 4byte 이다.
따라서 'Byte' 는 기본 타입이 아니다. (대소문자를 구분한다.)
[2-5] 문자와 문자열
1. char (2byte) : 문자를 저장하며 ' ' 로 감싸진다. 작은 따옴표 안에 하나의 문자만 올 수 있다.
2. String (4byte) : 문자열을 저장하며 " " 로 감싸진다. 큰 따옴표 안에 문자열이 올 수 있다.
덧셈 연산을 할 때 문자열이 들어간다면 결과는 항상 문자열로 나온다.
그러나 int 보다 작은 byte, short, char 이 덧셈 연산을 하면 int 형으로 바뀌어 계산된다.
System.out.println('1'+'1'); // 98
System.out.println('1'+"1"); // 11
[2-8] 참조형 변수의 메모리 크기
참조형 변수는 모두 4byte 를 가지므로, 기본형 변수중엔 int, double 과 메모리 크기가 같다.
[추가로 공부할 것]
1. 데이터 타입의 범위 => Type.MAX_VALUE 또는 Type.MIN_VALUE (Type 은 참조형)
2. 변수명 조건과 올바른 변수 초기화 조건
3. 자동 형변환과 강제 형변환
4. 데이터 타입별 기본값