Coding/Java

Java Variable & Data Type

heyoon2j 2020. 7. 2. 00:51

■ 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