기본형 변수
기본형 변수(primitive type variable)란 정수형, 실수형, 문자형 등과 같이 실제 연산에서 사용되는 변수이다. 자바에서는 여러 형태의 타입을 미리 정의하여 제공하고 있는데, 이것을 기본형 변수라고 한다. 자바의 기본형 변수는 모두 8종류가 제공되며, 크게는 정수형, 실수형, 문자형 그리고 논리형 타입으로 나눌 수 있다.[1]
목차
개요[편집]
컴퓨터 프로그래밍에서 변수(變數, variable) 또는 스칼라(scalar)는 아직 알려지지 않거나 어느 정도까지만 알려져 있는 양이나 정보에 대한 상징적인 이름이다. 컴퓨터 소스 코드에서의 변수 이름은 일반적으로 데이터 저장 위치와 그 안의 내용물과 관련되어 있으며 이러한 것들은 프로그램 실행 도중에 변경될 수 있다.
프로그래밍에서의 변수는 수학에서 말하는 변수의 개념과 완전히 일치하지 않을 수도 있다. 컴퓨터 변수의 값은 수학에서처럼 등식이나 공식의 필수적인 부분이 아니다. 컴퓨터 환경에서 변수는 반복적인 과정 안에서 이용할 수도 있다. 이를테면 한 장소의 값을 할당한 뒤 어느 곳에서 사용한 다음 새로운 값으로 다시 할당하고 같은 방법으로 다시 사용할 수도 있다. 컴퓨터 프로그래밍에서의 변수는 긴 이름이 자주 나오며, 어떻게 이용할 것인지에 대한 설명을 나타내는 반면 수학에서의 변수는 짧은 시간 동안 쓰이는 간결한, 한 두 개 문자 이름이다.
컴파일러는 변수의 상징적인 이름을 데이터의 실제 위치로 치환해야 한다. 변수 값, 형, 위치는 일반적으로 고정된 채 유지되는 반면 위치에 저장되어 있는 데이터는 프로그램 실행 도중 변경될 수 있다.[2]
특정 값을 저장하는 메모리 공간을 뜻한다. 해당 메모리 공간에 저장되는 값은 정수형(integer( int )), 실수형(float, double), 문자열(char[]) 등 여러가지 형식이 있으며 이를 이용하여 프로그래밍 한다. 해당 메모리 공간에는 허용되는 범위 내에 어떤값이든 저장할수 있으므로 변수라고 하며, 허용되는 범위보다 큰 값을 저장하려고 할 때 오버플로가 발생한다. 각 프로그래밍 언어에 따라 변수의 선언 방법 및 값 대입방법, 연산하는 방법등, 문법에는 비슷한 점이 많으나 조금씩 차이가 있다.[3]
역사[편집]
수학에서의 변수란, 어떤 정해지지 않은 임의의 값을 표현하기 위해 사용된 '기호' 이다. 보통 쉽게 설명하기 위해서 '변하는 숫자' 라는 표현을 자주 쓰고는 한다. 반대말로는 상수가 있다.
변수의 본격적인 도입은 프랑수아 비에트에 의해 16세기에 이루어졌다. 이 변수라는 존재는 수학이라는 학문에 대수학이 가져다 준 가장 큰 산물 중 하나이자, 또한 16세기말을 기점으로 대수학이 본격적으로 엄밀하고 이전과는 다른 수준의 수학으로 진화될 수 있게 해준 장본인이기도 하다.
변수가 등장하기 이전까지의 대수학은 현대의 대수학과 달리 '엄밀한 증명'같은 내용에는 관심 없는 '아랍에서 건너온 산수 방법' 또는 '똑똑한 이탈리아인들이 발견한 방정식을 푸는 기술' 정도에 불과하였다.[1] 그러나 비에타에 의해 변수가 도입되자 대수학은 '연산 방법'에서, '연산 그 자체의 성질에 대한 추론과 연구'로 진화할 수 있게 된다. 예컨대 당장 '덧셈 연산'의 성질인 '교환 법칙'만 보더라도, 변수를 사용하지 않는다면 이의 일반화된 표현조차 불가능하다. 즉 '□+△ = △+□' 라는 표현 대신 '어떤 두개의 숫자를 더할 때, 더하는 순서를 바꾸더라도 그 결과는 동일하다' 라는 표현을 써야되는 것이다. 그렇기에 변수는 대수학을 '연산 기술' 로부터 연산 대상과 연산자의 성질에 대해서 연구하는 수학으로 바꿔버린 주인공이 된다.
더불어 이러한 대수 구조를 엄밀하게 연구할 수 있게 해줄 뿐 아니라, 변수를 이용하면 방정식의 미지수 또한 기호로 표현할 수 있다. 그렇기에 이는 변수가 등장하기 이전의 대수학에서도 이미 중요한 주제였던 '방정식의 해를 구하는 기술'에 대한 연구도 이전보다 훨씬 더 엄밀하게 이뤄질 수 있게 해줬다. 예를 들어 이차방정식의 근의 공식은 고작 중학교때 배우는 내용이다. 그러나 만약 변수라는 개념이 아예 존재하지 않는다고 가정한 채 이를 표현하고자 한다면, 이는 결코 만만치 않은 일이다.
또한 변수는 대수학의 진화의 촉매 역할 뿐 아니라 수학의 다른 대부분의 분야에서도 필수적인 기반이 되어준다. 미적분학은 함수의 입력값들과 출력값들을 변수로 표현한 덕분에 존재할 수 있다. 극한을 엄밀한 표현으로 바꿔주는 것도 엡실론과 델타라는 변수(와 집합론)이다. 함수를 정의하고 그 성질을 연구할 때 입력과 출력을 각 경우별로 하나 하나 나열하지 않고 변수로 일반화시켜 한꺼번에 표현한 후 이들을 다루면서 엄밀한 논리를 차근 차근 적용해 가는것은 모든 해석학에서 당연스럽게 취하는 핵심적인 태도와 방식이다. 흔히 쓰이는 표현인 '해석적인(Analytical) 방식'이라는 표현[2]의 의미 또한, 바로 이렇게 해석학에서 대상을 다루듯이 '변수를 그대로 이용하고 연산하며 엄밀한 논리의 전개를 펼쳐가는 방식'을 말한다.
해석학 등에서 사용되는 엡실론-델타 논법을 그대로 고등학교 수학에서 적용하면 학생들은 극한, 연속, 미분, 적분에 관한 의미를 파악하는것 조차 힘들것이다. 이에 해석학에서 사용되는 다양한 변수의 의미와 고등학교 수학에서 사용되는 변수는 다른 의미를 갖는다.
수학이 아닌 일상생활에서 변수라는 단어가 쓰일 때는 행위에 대한 결과가 여러가지 인 경우, 혹은 어떤것을 하기 위한 선택지가 많은상황 등, 현재 정해져 있지 않은 요인들을 뜻한다.[3]
특징[편집]
종류[편집]
기본형 변수는 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(long, double)으로 나눌 수 있다. [4]
- 정수형 : byte, short, int, long
- 실수형 : float, double
- 문자형 : char
- 논리형 : boolean
명명 규칙[편집]
- 변수의 이름은 영문자(대소문자), 숫자, 언더스코어(_), 달러($)로만 구성할 수 있다.
- 변수의 이름은 숫자로 시작할 수 없다.
- 변수의 이름 사이에는 공백을 포함할 수 없다.
- 변수의 이름으로 자바에서 미리 정의된 키워드(keyword)는 사용할 수 없다. [5]
변수 표기법(코딩 스타일)[편집]
카멜 표기법[편집]
- 낙타 등처럼 내려갔다 올라가는 모양이라 하여 지어진 이름[7]
- 단어가 여러개 붙을 때, 앞 단어를 제외한 첫자를 대문자로 표기
- java, C# 등의 언어들에서 권장
예) dailyUserTable
파스칼 표기법[편집]
- 모든 단어의 앞자가 대문자로 시작(단어의 수와 상관 없음)
- 네임스페이스, 이벤트, 프로퍼티, 클레스 네임을 지정할 때 주로 사용
- 클래스 등에서 자주 사용 됨
예) DailyUserTable
스네이크 표기법[편집]
- 모든 단어가 소문자로 표시
- 다른 의미를 갖는 단어들의 조합에서 각 단어의 구분을 위하여 언더바(_)를 붙힘
- 단어 사이의 '_'가 뱀처럼 보인다고 해서 유래
- 언더바 표기법이라고 불림
- C++에서 권장
예) daily_user_table
헝가리안 표기법[편집]
- 접두어에 자료형을 붙힘
- 마이크로소프트 개발자 중 헝가리 프로그래머가 쓰던 변수 명명법
- 현재는 자료형을 쉽게 알아볼 수 있는 다양한 방법들이 많기 때문에 권장하지 않음
예) strDailyUserTable
명명 권장사항[편집]
- 클래스 이름의 첫 글자는 항상 대문자로 한다.
- 변수와 메서드의 이름 첫 글자는 항상 소문자로 한다.
- 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
- 상수의 이름은 모두 대문자로하고 여러 단어로 이루어진 경우 '_'로 구분한다.[8]
규칙의 예시 변수의 이름이 올바른 경우 변수의 이름이 잘못된 경우 잘못된 이유[9] int hash int h!sh* 변수 이름이 영문자, 숫자, _외에 특수문자 사용하였음 int hash int 7hash 변수 이름이 숫자로 시작하였음 int hash int ha sh 변수 이름 ha와 sh 사이에 공백이 있음 int int 변수 이름에 int라는 키워드를 사용하였음
표현 가능 범위[편집]
자료형 데이터 메모리 크기 표현가능 범위[8] boolean 참과 거짓 1바이트 true, false char 문자 2바이트 모든 유니코드 문자 byte 정수 1바이트 -128 ~ 127 short 2바이트 -32768 ~ 32767 int 4바이트 -2147483628 ~ 2147483647 long 8바이트 -9223372036854775808 ~ 9223372036854775807 float 실수 4바이트 3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits) double 8바이트 1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits)
활용[편집]
변수 선언[편집]
값을 입력하고, 출력하고 연산하기 위해서는 꼭 메모리 공간이 필요하다. 그래서 맨 처음 해야하는 것이 어떤 형의 값을 저장할 공간을 선언하는 것이다.
변수 선언 예시[편집]
byte integer1 = 1; // byte 선언 short integer2 = 2; // short 선언 int integer3 = 3; // int 선언 long integer4 = 4; // long 선언 float fl = 2.4f; // float 선언 double db = 2.4; // double 선언 char ch = 'a'; // char 선언 String str = "문자열"; // String 선언 boolean bool = true; // boolean 선언 [10]
각주[편집]
참고자료[편집]
- 〈TCPSCHOOL : 기본 타입〉
- 〈위키백과 : 변수(컴퓨터 과학)〉
- 〈나무위키 : 변수〉
- 〈Java Tip〉
- 〈TCPSCHOOL : 자바 변수〉
- 〈변수명 표기법〉
- 〈명명 권장사항〉
- 〈규칙 예시〉
- 〈변수 타입의 종류〉
같이 보기[편집]