■ Java Variable(변수)
- 변수 : 값을 저장할 수 있는 메모리 공간을 의미.
- 상수(constant) : java의 경우 final을 붙인다.
- 리터럴 : 모든 리터럴은 상수 풀(constant pool)에 저장된다.
• 변수 이름 선언 시 적용되는 규칙
1) 변수의 이름은 알파벳, 숫자로 구성된다.
2) 대소문자를 구분한다.
3) 변수의 이름은 숫자로 시작할 수 없고, 예약어는 사용할 수 없다
(숫자를 사용하고 싶다면, _8value)
4) 특수 문자는 '_' 와 '$' 만 사용 가능
• Code Convention
대상 | 내용 |
변수, 메소드 | camelCase, 소문자부터 시작 ex> int valueOfComputer |
Class, Interface, Enum, Annotation | PascalCase, 대문자로 시작 ex> int UpperCamelCase |
상수 | CONSTANT_NUMBER ex> final int FINAL_VARIABLE |
■ Data Type
- Data Type으로는 2가지가 있다.
• Primitive Type(기본형)
- 값을 변수에 직접 저장하는 자료형
종류 | 자료형 | 크기(Byte) | 범위 |
논리형 | boolean | 1 Byte | false(거짓), true(참) |
문자형 | char | 2 Byte | |
정수형 | byte | 1 Byte | -2^7 ~ 2^7 - 1 ( -128 ~ 127 ) |
short | 2 Byte | -2^15 ~ 2^15 - 1 ( -32768 ~ 32767 ) |
|
int | 4 Byte | -2^31 ~ 2^31 - 1 ( -약 21억 ~ 약 21억 ) |
|
long | 8 Byte | -2^63 ~ 2^63 - 1 | |
실수형 | float | 4 Byte | -m * 10^e ~ m*10^e // m = 23, e = 8 ( Max : 3.4028235*10^38 ) ( Min : 1.4*10^-45, 절대값 기준 ) |
double | 8 Byte | -m * 10^e ~ m*10^e // m = 52, e = 11 ( Max : 1.8*10^308 ) ( Min : 4.9*10^-324 ) |
1) 정수 리터럴 상수는 기본적으로 4 Byte(integer)로 처리하기 때문에, long lVal = 12345678900; 인 경우 에러를 발생시킨다. 그렇기 때문에, long lVal = 12345678900L; 이라고 뒤에 long 이라는 L을 붙여 8 Byte 정수 데이터인 것을 알려야 된다.
2) 실수 리터럴 상수는 기본적으로 8 Byte(double)로 처리하기 때문에, float fVal = 3.14; 인 경우 에러를 발생시킨다. 그렇기 때문에 float fVal = 3.14F; 이라고 뒤에 float 이라는 F를 붙여 4 Byte 실수 데이터인 것을 알려야 된다.
• Reference Type(참조형)
- 값을 직접 저장하지 않고, 값이 저장된 주소를 저장
- ex> Class a = new Class();
■ Type Casting
- 메모리 크기를 기준으로 보는 것이 아닌 Data Type을 기준으로 변환한다.
• Upcasting
- 값의 범위가 더 큰 자료형으로 변환하는 경우
byte byteVal = 10;
int intVal = byteVal; // Upcasting은 자동적으로 된다.
intVal = (int)byteVal;
Child c = new Child();
Parent p = c; // 자식 클래스 -> 부모 클래스
• Downcasting
- 값의 범위가 더 작은 자료형으로 변환하는 경우
long longVal = 104244L;
int intVal = (int)longVal; // 메모리 적으로 크기가 줄어들기 때문에 원하는 결과가 나오지 않을 수 있다.
• Type Casting시 추가적으로 주의할 점
1. 일반적으로 Upcasting은 자동적으로 되지만, byte, short -> char 형 변환은 불가
- byte, short 형의 byte 크기는 char 형 보다 작거나 같지만, char 형은 음수를 갖지 않는다. 그렇기 때문에 강제 형변환을 통해서만 형 변환이 가능하다.
2. 정수 타입 -> 실수 타입 형 변환 시, 정밀도 손실을 피해야 한다.
- int는 32 bit로 표현되고, float의 가수는 23 bit로 표현되기 때문에 23 bit 보다 큰 값인 경우, 정밀도가 손실된다. 즉, 원하는 값이 안 나올 수 있다.
- 그렇기 때문에 int 형은 double 형으로 형 변환하는 것이 좋다.
'Coding > Java' 카테고리의 다른 글
Java Loops(반복문) (0) | 2020.09.16 |
---|---|
Java Conditional(조건문) (0) | 2020.09.16 |
Java Operator(연산자) (0) | 2020.09.15 |
Java - Thread (0) | 2020.08.26 |
Java 개발 환경 구축 및 컴파일 과정 (0) | 2020.06.29 |