변수, 상수, 자료형

By | 2009년 3월 3일

자료형 (Data Type)

자료형이란 변수나 상수가 저장할 수 있는 자료의 형식을 의미한다. 당연한 얘기지만 JSP 프로그래밍에서의 자료형은 Java의 그것과 완전히 동일하다. 자료형은 크게 숫자형, 문자형 그리고 불형으로 구분할 수 있다.

숫자형 (Numeric Type)

숫자형은 크게 정수를 위한 자료형과 실수를 위한 자료형으로 구분되며 숫자를 표현할 수 있는 크기에 따라 다음과 같이 구분됩니다.

정수형 (Integer Type)

byte (8 bit) -128 ~ 127
short (16 bit) -32,768 ~ 32,767
int (32 bit) -2,147,483,648 ~ 2,147,483,647
long (64 bit) -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

실수형 (Floating-point Type)

float (32 bit)
double (64 bit)

위 정수형에서 알 수 있듯 숫자 자료형의 크기가 커질 수록 표현가능한 숫자의 범위도 커집니다. 따라서 실수형에서도 마찬가지로 표현 가능한 실수의 범위가 float 보다 double 이 더 크고 정밀한 수의 표현이 가능 합니다. 여기서 정밀하다는 의미는 소수점 아래로 더 많은 숫자를 표현할 수 있다는 의미를 뜻합니다.

문자형 (Character Type)

문자형은 UTF-16 문자를 저장하기 위한 자료형으로 양의 정수를 의미하기도 한다. Sun에서 제공하는 Java 문서에서는 이 자료형을 정수형(Integer Type)에 포함시키고 있다.

char (16 bit) ‘\u0000’ ~ ‘\uffff’ 또는 0 to 65535

불린형 (Boolean Type)

불린형은 논리값, 즉 참(true)과 거짓(false)을 저장하기 위한 자료형이다.


상수 (Constant)

상수란 프로그램 언어에서 표현되고 처리되어지는 값을 의미하며 자료형과 밀접한 관계를 가진다. 각 자료형과 관계된 상수의 표현은 다음과 같다.

정수형 상수

정수형 상수 중 byte, short, int 형 상수는 123, 1, -2134, -1234124과 같이 표현한다. 그러나 long 형 상수는 1L, -922L, 83423L과 같이 byte, short, int 형 상수에 ‘L’을 붙여 표현한다.

실수형 상수

실수형 상수는 소수점을 가진 수자로 doble 형 상수는 3.14, 0.0, 100.0 등과 같이 표현하고 float형 상수는 3.14F, 0.0F, 100.0F 등과 같이 double 형 상수에 ‘F’를 붙여 표현한다.

문자형 상수

문자형 상수는 일반적으로 작은 인용부호 “‘” 안에서 표현된다. 예를 들면 ‘A’, ‘\u0041’와 같이 표현된다. 또한 문자형 상수는 양의 정수를 의미한다고도 하였기 때문에 65와 같이 표현할 수도 있다. 그러나 큰 인용부호 “”” 안에 표현된 “A”, “ABC” 등과 같은 문자들은 문자형 상수가 아니라 String 클래와 관련되어진 문자열이므로 주의해야한다. String 클래스에 대해서는 후에 주체적으로 다루겠다.


변수 (Variable)

변수란 프로그래밍 언어에서 자료를 저장하고 접근하기 위해 이름이 붙여진 식별자로 내부적으로는 기억공간 즉 메모리를 의미한다. JSP에서의 변수 역시 Java의 형식과 같으며, 사용전에 반드시 자료형과 함께 선언되야 한다.
변수의 이름에 해당되는 식별자는 다음과 같은 규칙을 가진다.

1. 식별자는 영어, 숫자, 또는 “_”로 구성된다.
2. 식별자의 시작은 반드시 영문자 또는 “_”로 시작되어야 하며 숫자로 시작되어서는 안된다.
3. 예약어와 같은 키워드는 식별자로 사용할 수 없다.

다음은 올바른 식별자와 잘못된 식별자를 보여주고 있다.

변수명으로 사용이 가능한 식별자
A, A0, student, Std_no, _def

변수명으로 사용할 수 없는 잘못된 식별자

5a : 숫자로 시작
if : 예약어
a#no : 특수문자(#) 포함

변수의 선언

변수는 자료형과 함께 다음과 같은 형식으로 선언된다.

int a ;
byte b, B = 0 ;
long distance = 1000L ;

첫 번째 선언에서 식별자 a는 int 형의 자료를 저장할 수 있는 변수를 의미한다. 따라서 변수 a는 -2,147,483,648 ~ 2,147,483,647 사이의 정수값을 가질 수 있다.

두 번째 선언에서는 식별자 b과 B가 -128 ~ 127 사이의 값을 가지는 byte 형 변수임을 선언하고 있다. 이와같이 여러개의 변수를 동시에 선언할 때는 각 식별자(변수명)을 ‘,’로 구분 나열하면 된다. Java는 대소문자를 서로 다른것으로 처리하기 때문에 b와 B는 서로 다른 두 개의 변수이다. 그리고 두 번째 변수 B는 대입연산자 ‘=’를 통해 초기값으로 0을 가지도록 선언하고 있다.

세 번째 선언에서는 식별자 distance가 long 형 자료형을 저장하는 변수로 초기값으로 1600을 저장하도록 선언하고 있다. 이 선언에서 long 현 상수를 의미하는 L이 1600 위에 붙어있음를 주의하자.

다음 프로그램 “variables.jsp”과 그 결과를 살펴보자.


<%@ page language=”java” contentType=”text/html; charset=EUC-KR”
    pageEncoding=”EUC-KR”%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-KR”>
<title>Insert title here</title>
</head>
<body>
<%
int num1 = 100;
double num2 = 100.9;
char a1 = ‘\u0041’, a2 = ‘A’, a3 = 65;
%>
<%= num1 %>
<%= num2 %>
<%= a1 %>
<%= a2 %>
<%= a3 %>
</body>
</html>


사용자 삽입 이미지

variables.jap 결과


프로그램에서 num1은 초기값 100을 가지는 int 형 변수이며, mun2는 초기값 100.9를 가지는 double형 변수이다. 또한 a1, a2, a3는 초기값을 각각 ‘\u0041’, ‘A’, 65 를 가지는 char 형 변수이다. 그런데 출력 결과를 보면 num1과 num2는 100과 100.9를 출력하였으나 a1, a2, a3는 \u0041, A, 65가 아닌 모두 A를 출력하고 있다. 이는 표현의 차이에서 비롯된 것으로 컴퓨터 내부적으로는 ‘\u0041’, ‘A’, 65 모두 같은 값으로 처리되며 이는 문자 ‘A’를 의미한다. 따라서 모두 A로 출력된 것이다.


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.