728x90
7.1 어휘적 요소
- 컴파일의 첫 번째 단계는 어휘적 요소를 토큰으로 스캐닝하는 것이다. 이 단계에서 화이트스페이스와 주석이 무시된다.
- 주석은 프로그래머의 편의를 위한 것이다.
- 토큰은 언어의 기본 단어이다. 파서는 소스 코드를 토큰으로 분리하고 문장, 식별자, 기타 등등을 판별한다.
- 식별자는 변수, 상수, 라벨에 선언된 이름을 말하며 이 이름은 문자와 숫자로 구성할 수 있다. 다만 이름의 첫 글자는 문자여야 한다.
- 키워드는 자바에서 특별한 의미를 갖기때문에 식별자로 사용할 수 없다.
7.2 타입과 리터럴
- 타입은 기본 타입과 참조 타입으로 분류할 수 있다.
- boolean, char, byte, short, int, long, float, double
- 각각의 기본 데이터 타입과 대응하는 클래스 타입이 java.lang에 포함되어 있다. 이를 래퍼 클래스라 부른다.
- 참조 타입에는 클래스 타입, 인터페이스 타입, 배열 타입이 있다. 이 타입의 변수들은 이와 대응하는 타입의 객체를 참조할 수 있다.
- 모든 타입은 타입을 나타내는 클래스 인스턴스와 연관되어 있다. 이 인스턴스는 해당 타입의 클래스 객체를 참조한다. 클래스 객체는 타입 이름 끝에 .class 를 붙여 지정할 수 있다.
- String.class
- java.lang.String.class
- java.util.Iterator.class
- boolean.class
- 처음의 두 클래스 리터럴은 동일한 클래스 인스턴스를 참조한다.
7.3 변수
- 변수는 값을 저장할 수 있는 저장 장소로 이 장소에 값을 대입할 수 있다. 변수는 필드, 코드 블록의 지역 변수, 매개변수를 말한다.
- 필드와 지역 변수는 동일한 방법으로 선언할 수 있으며 세 부분, 즉 제한자, 타입, 식별자 리스트로 구분할 수 있다. 식별자는 초기 값을 대입하는 초기자를 가질 수 있다. 여러 변수를 한 번에 선언하는 것과 각각 따로 선언하는 것은 동일한 의미.
// 둘은 같다.
float x, y;
float x;
float y;
float x = 3.14f, y = 2.81f;
float x = 3.14f,
y = 2.81f;
float x = 3.14f;
float y = 2.81f;
- 필드 변수는 클래스나 인터페이스의 멤버이며 클래스나 인터페이스의 몸체 내에 선언.
- 필드는 초기자, 초기화 블록, 생성자로 초기화할 수 있지만 필수는 아님. 초기화 안하면 기본 값으로 자동 초기화.
- 지역 변수는 사용하기 전에 반드시 값이 대입되어 있어야 한다. 지역 변수는 기본 초기값을 가지지 않는다.
- 컴파일러는 지역 변수에 값이 명확하게 대입되어 있지 않으면 지역 변수의 사용을 허용하지 않는다.
- 매개변수는 메소드, 생성자, catch 블록에 선언 가능.
- final 제한자는 변수의 값을 정확히 한 번만 설정할 수 있게 하고 이 값이 프로그램 실행 중에는 변경되지 않도록 하고 싶을 때 선언하는 제한자. 이를 불변적이라고 한다. final로 선언한 변수는 사용 전 초기화 필수!
7.4 배열 변수
- 배열은 요소들을 순차적으로 접근할 수 있게 해주는 집합이다.
- 배열의 요소들은 기본 타입 또는 객체 참조가 될 수 있으며 다른 배열 참조가 될 수도 있음.
int[][] a = new int[4][4];
for(int i = 0; i < a.length; i++)
for(int j = 0; j < a[i].length; j++)
System.out.print(a[i][j] + " ");
System.out.println();
}
String[] dangers = { "Lions", "Tigers", "Bears" };
String[] dangers = new String[]{ "Lions", "Tigers", "Bears" };
method(new String[]{ "Lions", "Tigers", "Bears" });
int[][] pascalsTriangle = {
{ 1 },
{ 1, 1 },
{ 1, 2, 1 },
{ 1, 3, 3, 1 },
};
- 배열은 묵시적으로 Object를 확장한다.
7.5 이름의 의미
- 이름은 두 가지 매커니즘에 의해 관리된다.
- 네임 스페이스, 이는 이름 종류에 다라 다른 네임 스페이스를 부여할 수 있도록 분할되어 있다.
- 유효 범위, 이는 프로그램의 한 영역에 선언된 이름이 다른 영역에 보이는 정도인 가시성을 제어하는 용도로 사용된다.
728x90
'도서 > 자바 프로그래밍 언어 - James Gosling' 카테고리의 다른 글
[자바 프로그래밍 언어] 9장 연산자와 표현식 (0) | 2021.12.28 |
---|---|
[자바 프로그래밍 언어] 8장 기본 타입과 래퍼 클래스 (0) | 2021.12.27 |
[자바 프로그래밍 언어] 6장 열거 타입 (0) | 2021.12.26 |
[자바 프로그래밍 언어] 5장 중첩 클래스와 인터페이스 (0) | 2021.12.25 |
[자바 프로그래밍 언어] 4장 인터페이스 (0) | 2021.12.24 |
댓글