Java/Java 기본

변수와 상수

검정비니 2018. 6. 8. 03:35
728x90
반응형

변수와 상수



1. 변수


변수는 데이터를 저장하는 공간이다. 따라서 변수를 선언하면 변수의 타입 크기에 맞는 메모리 공간이 할당된다. 변수에 저장되는 값은 프로그램 수행 중에 계속 바뀔 수 있다.



- 변수 선언 : 


다음과 같이 자바에서는 변수의 타입 다음에 변수 이름을 적어 변수를 선언한다.


int x;



- 변수 선언과 초기화 :


변수 선언과 동시에 초깃값을 지정할 수 있다. 예를 들면 다음과 같다.


int radius = 10;



- 변수에 대한 값 대입 :


변수를 선언한 후 변수에 값을 대입할 수 있다. 변수에 값을 대입할 때는 대입 연산자인 = 다음에 식(expression)이 온다.


radius = 10 * 5;

int x = radius * radius;



2. 리터럴


리터럴이란 프로그램에서 직접적으로 표현되는 상수 값을 말한다. 리터를의 예를 보면 다음과 같다.

34, '%', 'k', 42, 195



- 정수 타입 리터럴


정수 타입 리터럴을 표현하는 방법은 다음과 같다.


1) 8진수: 0으로 시작하는 숫자는 8진수 정수

2) 16진수: 0x로 시작하는 숫자는 16진수 정수

3) 10진수: 0으로 시작하지 않는 보통 수는 10진수 정수

4) 2진수: 0b로 시작하는 숫자는 2진수 정수


그러므로 15, 015, 0x15는 모두 서로 다른 의미를 가진다.


자바에서 모든 정수 타입 리터럴은 int 타입으로 처리한다. 만일 리터럴을 long 타입으로 하고자 한다면 숫자 뒤에 L 또는 l을 붙이면 된다.

i.e. 24L




- 실수 타입 리터럴


실수 타입 리터럴은 부동 소수점을 갖는 수를 표시한다. 숫자에 소수점을 찍어 표시하거나 지수(exponent)로 표현한다. 실수 타입 리터럴의 예를 들면 다음과 같다.


12. 혹은 12.0 (정수 부분 뒤에 점을 찍어야 한다)

.1234, 0.1234,  1234E - 4 (소수 부분 앞에 점을 찍는다)


자바에서 모든 실수 타입 리터럴은 double 타입으로 처러한다. 그러나 숫자 뒤에 f 또는 F를 붙이면 float 타입으로, d나 D를 붙이면 double 타입으로 지정할 수도 있다.



- 문자 타입 리터럴


문자 타입 리터럴은 문자 한 개를 표현하는 것으로 다음과 같은 표현 방법이 있다.


1) 단일 인용부호 (' ')로 정상적인 문자 하나 표현.

'a', '1'


2) \u 다음에 네 자리 16진수로 2바이트의 유니코드를 표현.

\u0041         ->      문자 'A'의 유니코드.



- 논리 타입 리터럴과 boolean 타입


논리 타입 리터럴은 true, false의 두 개 밖에 없다. boolean 타입의 변수가 가질 수 있는 값은 참과 거짓뿐이며, true는 참값을, false는 거짓값을 표현한다.



- 기본 데이터 타입 이외의 리터럴


자바 기본 타입의 리터럴 외에 자주 사용되는 다음의 두 가지 리터럴이 있다.


1) null 리터럴  (주소값이 없다)


null은 어떠한 레퍼런스 타입의 값으로도 사용될 수 있고, 기본 타입을 제외한 어떠한 타입의 변수에도 대입될 수 있다.


i.e. String str = null;



2) String (문자열) 리터럴


문자열 리터럴은 "Hello"와 같이 이중 인용부호(큰 따옴표)로 묶어서 표현한다.

자바에서 문자열은 String 클래스의 객체이므로 기본 타입이 아니다. 문자열 리터럴은 다음과 같이 String 객체가 저장하는 값이다.


i.e. String str = "string";





3. 상수


상수는 변수와 달리 프로그램 실행 중에 값이 바뀔 수 없다. 이미 값이 정해진 상수의 값을 변경 시키려고 하면, 컴파일 에러가 뜬다.


상수를 만드는 방법은 변수 선언 시 final 키워드를 사용하는 것이다.


i.e. final int PI = 3.141592;

반응형

'Java > Java 기본' 카테고리의 다른 글

자바에서의 키 입력  (0) 2018.06.08
타입 변환  (0) 2018.06.08
자바의 데이터 타입  (0) 2018.06.08
이름 붙이는 관습  (0) 2018.06.07
Java 프로그램의 구조  (0) 2018.06.06