식별자 이름 규칙
자바에서 식별자를 만들 떄 다음 규칙이 준수되어야 한다.
-
특수문자(%, *, @, ^ 등), 공백(Tab, Space 등)은 식별자로 사용할 수 없으나, “_, $” 문자들은 예외로 사용할 수 있다.
-
한글도 식별자로 사용 가능하다.
-
if, while, class 등 자바 언어에서 사용하는 키워드는 식별자로 사용할 수 없다.
-
식별자의 첫 번째 문제로 숫자는 사용할 수 없다.
-
대소문자를 구별한다.
-
길이 제한이 없다.
자바 키워드
자바에서 이미 그 용도가 정해진 것으로 예악어 또는 키워드라고도 하며, 식별자의 이름으로 사용할 수 없다.
자바의 데이터 타입
데이터 타입이란 자바에서 다룰 수 있는 데이터의 종류를 말한다.
자바의 데이터 타입은 크게 기본 타입과 참조 타입과 같이 크게 2가지로 나뉘며 다음을 참고하면 세부적인 데이터 타입 분류를 확인할 수 있다.
-
기본 타입(Primitive Type)
-
boolean
-
char
-
byte
-
short
-
int
-
long
-
float
-
double
-
다음을 통해 기본 타입의 리터럴, 크기, 값의 범위는 다음을 참고하면 확인할 수 있다.
-
참조 타입(Reference Type)
-
배열(array)에 대한 참조
-
클래스(class)에 대한 참조
-
인터페이스(interface)에 대한 참조
-
문자열
자바에서 문자열은 기본 타입에 속하지 않고 JDK에서 제공하는 String 클래스를 이용하여 사용한다. 따라서 참조 타입으로 분류되며, 다음과 같은 특징들을 가지고 있다.
-
불변성: 값을 변경할 수 없으며, 새 객체를 생성하여 값을 대체한다. 그리고 멀티 스레드 환경에서 동기화 문제 없이 안전하게 사용 가능하고 해시 코드가 캐시되어 성능 최적화에 도움을 준다.
-
문자열 상수 풀: 메모리 사용을 최적화하기 위해 문자열 상수 풀(String Constant Pool, SCP)이라는 특별한 영역을 힙 메모리 내에 관리한다. 사용하려는 리터럴이 존재하면 새 객체를 만들지 않고 기존 객체의 주소를 반환하여 재사용하도록 한다.
-
참조 타입: 문자열은 기본 타입이 아닌 참조 타입이므로 두 문자열의 내용 비교 시에는 “==” 연산자 대신 내부에 구현되어 있는 equals() 메소드를 사용해서 실제 내용이 같은지 비교한다.
-
결합의 비효율성: 불변성으로 인해, 반복문 내에서 문자열을 결합하는 것은 성능상 비효율적이다. 따라서 문자열을 자주 변경하거나 결합해야 할 때는 가변인 StringBuilder(싱글 스레드 환경) 객체 또는 StringBuffer(멀티 스레드 환경) 객체를 사용해야 성능 저하를 방지할 수 있다.
-
char 타입 배열로 구성: 내부적으로 자바 문자열은 char 타입의 배열로 구현되어 있다.
상수
변수와 달리 실행 중에 값을 바꿀 수 없으며, 변수 선언 시 final 카워드를 사용한다. 상수 선언 방법은 다음과 같다.
package ch2n2;
public class Const {
public static void main(String[] args) {
final double PI = 3.141592;
System.out.println(PI);
}
}
타입 변환
변수나 상수 혹은 리터럴의 타입을 다른 타입으로 바꾸는 것을 말한다.
- 자동 타입 변환: 다음과 같이 치환문(=)이나 수식 내에서 타입이 일치하지 않을 때, 컴파일러는 오류 대신 작은 타입을 큰 타입으로 자동 변환한다.
long m = 25; // 25는 int 타입이지만, long 타입으로 변환된다.
double d = 3.14 * 10; // 실수 연산을 하기 위해 10 리터럴이 10.0으로 변환된다.
- 강제 타입 변환: 개발자가 강제로 타입 변환을 지시하는 경우를 말한다.
int n = 300;
byte b = (byte)n;