최신판 |
당신의 편집 |
1번째 줄: |
1번째 줄: |
− | '''기본형 변수'''(primitive type variable)란 정수형, 실수형, 문자형 등과 같이 실제 연산에서 사용되는 변수이다. [[자바]]에서는 여러 형태의 타입을 미리 정의하여 제공하고 있는데, 이것을 기본형 변수라고 한다. 자바의 기본형 변수는 모두 8종류가 제공되며, 크게는 정수형, 실수형, 문자형 그리고 논리형 타입으로 나눌 수 있다.<ref name='머릿말'>기본형 변수〈[http://tcpschool.com/java/java_datatype_basic]〉, 《tcpschool》</ref> | + | '''변수'''란 아직 알려지지 않거나 어느 정도까지만 알려져 있는 양이나 정보에 대한 |
| + | 상징적인 이름이다. [[JAVA]]에서 '''기본형 변수'''란 값 자체를 저장할 수 있는 저장 공간을 뜻한다.<ref name='기본형'>기본형 변수의 정의〈[https://sambalim.tistory.com/73]〉, 《tistory》 , 2019-11-30</ref> |
| | | |
| == 개요 == | | == 개요 == |
− | 컴퓨터 프로그래밍에서 변수(變數, variable) 또는 스칼라(scalar)는 아직 알려지지 않거나 어느 정도까지만 알려져 있는 양이나 정보에 대한 상징적인 이름이다. 컴퓨터 소스 코드에서의 변수 이름은 일반적으로 데이터 저장 위치와 그 안의 내용물과 관련되어 있으며 이러한 것들은 프로그램 실행 도중에 변경될 수 있다.
| |
| | | |
− | 프로그래밍에서의 변수는 수학에서 말하는 변수의 개념과 완전히 일치하지 않을 수도 있다. 컴퓨터 변수의 값은 수학에서처럼 등식이나 공식의 필수적인 부분이 아니다. 컴퓨터 환경에서 변수는 반복적인 과정 안에서 이용할 수도 있다. 이를테면 한 장소의 값을 할당한 뒤 어느 곳에서 사용한 다음 새로운 값으로 다시 할당하고 같은 방법으로 다시 사용할 수도 있다. 컴퓨터 프로그래밍에서의 변수는 긴 이름이 자주 나오며, 어떻게 이용할 것인지에 대한 설명을 나타내는 반면 수학에서의 변수는 짧은 시간 동안 쓰이는 간결한, 한 두 개 문자 이름이다.
| + | 기본형 변수는 논리형, 문자형, 정수형, 실수형으로 나눌 수 있다<ref name='tistory'>기본형 변수의 종류〈[https://shyvana.tistory.com/12?category=809210]〉, 《tistory》 , 2019-11-13</ref> |
| | | |
− | 컴파일러는 변수의 상징적인 이름을 데이터의 실제 위치로 치환해야 한다. 변수 값, 형, 위치는 일반적으로 고정된 채 유지되는 반면 위치에 저장되어 있는 데이터는 프로그램 실행 도중 변경될 수 있다.<ref name='변수'>변수의 정의〈[https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)]〉, 《위키백과》</ref>
| + | *논리형 : boolean(1byte) |
− | | + | *문자형 : char(2byte) |
− | 특정 값을 저장하는 메모리 공간을 뜻한다. 해당 메모리 공간에 저장되는 값은 정수형(integer( int )), 실수형(float, double), 문자열(char[]) 등 여러가지 형식이 있으며 이를 이용하여 프로그래밍 한다. 해당 메모리 공간에는 허용되는 범위 내에 어떤값이든 저장할수 있으므로 변수라고 하며, 허용되는 범위보다 큰 값을 저장하려고 할 때 오버플로가 발생한다.
| + | *정수형 : byte(1byte), short(2byte), int(4byte), long(8byte) |
− | 각 프로그래밍 언어에 따라 변수의 선언 방법 및 값 대입방법, 연산하는 방법등, 문법에는 비슷한 점이 많으나 조금씩 차이가 있다.<ref name='프로그래밍 변수'>프로그래밍 변수의 정의〈[https://namu.wiki/w/%EB%B3%80%EC%88%98]〉, 《나무위키》</ref>
| + | *실수형 : float(4byte), double(8byte) |
− | | |
− | == 역사 ==
| |
− | 수학에서의 변수란, 어떤 정해지지 않은 임의의 값을 표현하기 위해 사용된 '기호' 이다. 보통 쉽게 설명하기 위해서 '변하는 숫자' 라는 표현을 자주 쓰고는 한다. 반대말로는 상수가 있다.
| |
− | | |
− | 변수의 본격적인 도입은 프랑수아 비에트에 의해 16세기에 이루어졌다. 이 변수라는 존재는 수학이라는 학문에 대수학이 가져다 준 가장 큰 산물 중 하나이자, 또한 16세기말을 기점으로 대수학이 본격적으로 엄밀하고 이전과는 다른 수준의 수학으로 진화될 수 있게 해준 장본인이기도 하다.
| |
− | | |
− | 변수가 등장하기 이전까지의 대수학은 현대의 대수학과 달리 '엄밀한 증명'같은 내용에는 관심 없는 '아랍에서 건너온 산수 방법' 또는 '똑똑한 이탈리아인들이 발견한 방정식을 푸는 기술' 정도에 불과하였다.[1] 그러나 비에타에 의해 변수가 도입되자 대수학은 '연산 방법'에서, '연산 그 자체의 성질에 대한 추론과 연구'로 진화할 수 있게 된다. 예컨대 당장 '덧셈 연산'의 성질인 '교환 법칙'만 보더라도, 변수를 사용하지 않는다면 이의 일반화된 표현조차 불가능하다. 즉 '□+△ = △+□' 라는 표현 대신 '어떤 두개의 숫자를 더할 때, 더하는 순서를 바꾸더라도 그 결과는 동일하다' 라는 표현을 써야되는 것이다. 그렇기에 변수는 대수학을 '연산 기술' 로부터 연산 대상과 연산자의 성질에 대해서 연구하는 수학으로 바꿔버린 주인공이 된다.
| |
− | | |
− | 더불어 이러한 대수 구조를 엄밀하게 연구할 수 있게 해줄 뿐 아니라, 변수를 이용하면 방정식의 미지수 또한 기호로 표현할 수 있다. 그렇기에 이는 변수가 등장하기 이전의 대수학에서도 이미 중요한 주제였던 '방정식의 해를 구하는 기술'에 대한 연구도 이전보다 훨씬 더 엄밀하게 이뤄질 수 있게 해줬다. 예를 들어 이차방정식의 근의 공식은 고작 중학교때 배우는 내용이다. 그러나 만약 변수라는 개념이 아예 존재하지 않는다고 가정한 채 이를 표현하고자 한다면, 이는 결코 만만치 않은 일이다.
| |
− | | |
− | 또한 변수는 대수학의 진화의 촉매 역할 뿐 아니라 수학의 다른 대부분의 분야에서도 필수적인 기반이 되어준다. 미적분학은 함수의 입력값들과 출력값들을 변수로 표현한 덕분에 존재할 수 있다. 극한을 엄밀한 표현으로 바꿔주는 것도 엡실론과 델타라는 변수(와 집합론)이다. 함수를 정의하고 그 성질을 연구할 때 입력과 출력을 각 경우별로 하나 하나 나열하지 않고 변수로 일반화시켜 한꺼번에 표현한 후 이들을 다루면서 엄밀한 논리를 차근 차근 적용해 가는것은 모든 해석학에서 당연스럽게 취하는 핵심적인 태도와 방식이다. 흔히 쓰이는 표현인 '해석적인(Analytical) 방식'이라는 표현[2]의 의미 또한, 바로 이렇게 해석학에서 대상을 다루듯이 '변수를 그대로 이용하고 연산하며 엄밀한 논리의 전개를 펼쳐가는 방식'을 말한다.
| |
− | | |
− | 해석학 등에서 사용되는 엡실론-델타 논법을 그대로 고등학교 수학에서 적용하면 학생들은 극한, 연속, 미분, 적분에 관한 의미를 파악하는것 조차 힘들것이다. 이에 해석학에서 사용되는 다양한 변수의 의미와 고등학교 수학에서 사용되는 변수는 다른 의미를 갖는다.
| |
− | | |
− | 수학이 아닌 일상생활에서 변수라는 단어가 쓰일 때는 행위에 대한 결과가 여러가지 인 경우, 혹은 어떤것을 하기 위한 선택지가 많은상황 등, 현재 정해져 있지 않은 요인들을 뜻한다.<ref name='프로그래밍 변수'/>
| |
| | | |
| == 특징 == | | == 특징 == |
− | === 종류 ===
| |
− | 기본형 변수는 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(long, double)으로 나눌 수 있다. <ref name='기본형 범위'>기본형 변수의 범위〈[https://blog.naver.com/korn123/30097861449]〉, 《JAVA TIP》 , 2019-11-13</ref>
| |
| | | |
− | * 정수형 : byte, short, int, long
| + | == 활용 == |
− | * 실수형 : float, double
| |
− | * 문자형 : char
| |
− | * 논리형 : boolean
| |
− | | |
− | === 명명 규칙 ===
| |
− | *변수의 이름은 영문자(대소문자), 숫자, 언더스코어(_), 달러($)로만 구성할 수 있다.
| |
− | *변수의 이름은 숫자로 시작할 수 없다.
| |
− | *변수의 이름 사이에는 공백을 포함할 수 없다.
| |
− | *변수의 이름으로 자바에서 미리 정의된 키워드(keyword)는 사용할 수 없다. <ref name='기본형 규칙'>기본형 변수의 규칙〈[http://tcpschool.com/java/java_datatype_variable]〉, 《tcpschool》</ref>
| |
− | | |
− | [[파일:예약어.PNG|650픽셀|섬네일|가운데|변수 명으로 사용할 수 없는 java 예약어<ref name='예약어'>예약어〈[https://blog.naver.com/jjekjjek7/222038366356]〉, 《java/예약어》</ref>]]
| |
− | | |
− | === 변수 표기법(코딩 스타일) ===
| |
− | ==== 카멜 표기법 ====
| |
− | - 낙타 등처럼 내려갔다 올라가는 모양이라 하여 지어진 이름<ref name='변수명 표기법'>변수명 표기법〈[https://blog.naver.com/nkind/222017581135]〉, 《Data Policy》</ref><br>
| |
− | - 단어가 여러개 붙을 때, 앞 단어를 제외한 첫자를 대문자로 표기<br>
| |
− | - java, C# 등의 언어들에서 권장<br>
| |
− | 예) dailyUserTable
| |
− | ==== 파스칼 표기법 ====
| |
− | - 모든 단어의 앞자가 대문자로 시작(단어의 수와 상관 없음)<br>
| |
− | - 네임스페이스, 이벤트, 프로퍼티, 클레스 네임을 지정할 때 주로 사용<br>
| |
− | - 클래스 등에서 자주 사용 됨<br>
| |
− | 예) DailyUserTable
| |
− | ==== 스네이크 표기법 ====
| |
− | - 모든 단어가 소문자로 표시<br>
| |
− | - 다른 의미를 갖는 단어들의 조합에서 각 단어의 구분을 위하여 언더바(_)를 붙힘<br>
| |
− | - 단어 사이의 '_'가 뱀처럼 보인다고 해서 유래<br>
| |
− | - 언더바 표기법이라고 불림<br>
| |
− | - C++에서 권장<br>
| |
− | 예) daily_user_table
| |
− | ==== 헝가리안 표기법 ====
| |
− | - 접두어에 자료형을 붙힘<br>
| |
− | - 마이크로소프트 개발자 중 헝가리 프로그래머가 쓰던 변수 명명법<br>
| |
− | - 현재는 자료형을 쉽게 알아볼 수 있는 다양한 방법들이 많기 때문에 권장하지 않음<br>
| |
− | 예) strDailyUserTable
| |
− | | |
− | === 명명 권장사항 ===
| |
− | * 클래스 이름의 첫 글자는 항상 대문자로 한다.
| |
− | * 변수와 메서드의 이름 첫 글자는 항상 소문자로 한다.
| |
− | * 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
| |
− | * 상수의 이름은 모두 대문자로하고 여러 단어로 이루어진 경우 '_'로 구분한다.<ref name='자바 변수'>명명 권장사항〈[https://dangle.tistory.com/7]〉, 《java》</ref>
| |
− | | |
− | :{|class=wikitable width=750 style="background-color:white"
| |
− | |+규칙의 예시
| |
− | !align=center style="background-color:ashgray"|변수의 이름이 올바른 경우
| |
− | !align=center style="background-color:ashgray"|변수의 이름이 잘못된 경우
| |
− | !align=center style="background-color:ashgray"|잘못된 이유<ref name='변수 예시'>규칙의 예시〈[http://tcpschool.com/c/c_datatype_variable]〉, 《java》</ref>
| |
− | |-
| |
− | |align=center|int hash
| |
− | |align=center|int h!sh*
| |
− | |align=center|변수 이름이 영문자, 숫자, _외에 특수문자 사용하였음
| |
− | |-
| |
− | |align=center|int hash
| |
− | |align=center|int 7hash
| |
− | |align=center|변수 이름이 숫자로 시작하였음
| |
− | |-
| |
− | |align=center|int hash
| |
− | |align=center|int ha sh
| |
− | |align=center|변수 이름 ha와 sh 사이에 공백이 있음
| |
− | |-
| |
− | |align=center|
| |
− | |align=center|int int
| |
− | |align=center|변수 이름에 int라는 키워드를 사용하였음
| |
− | |}
| |
− | | |
− | === 표현 가능 범위 ===
| |
− | :{|class=wikitable width=750 style="background-color:white"
| |
− | |+
| |
− | !align=center style="background-color:ashgray"|자료형
| |
− | !align=center style="background-color:ashgray"|데이터
| |
− | !align=center style="background-color:ashgray"|메모리 크기
| |
− | !align=center style="background-color:ashgray"|표현가능 범위<ref name='자바 변수'></ref>
| |
− | |-
| |
− | |align=center|boolean
| |
− | |align=center|참과 거짓
| |
− | |align=center|1바이트
| |
− | |align=center|true, false
| |
− | |-
| |
− | |align=center|char
| |
− | |align=center|문자
| |
− | |align=center|2바이트
| |
− | |align=center|모든 유니코드 문자
| |
− | |-
| |
− | |align=center|byte
| |
− | |align=center rowspan="4"|정수
| |
− | |align=center|1바이트
| |
− | |align=center|-128 ~ 127
| |
− | |-
| |
− | |align=center|short
| |
− | |align=center|2바이트
| |
− | |align=center|-32768 ~ 32767
| |
− | |-
| |
− | |align=center|int
| |
− | |align=center|4바이트
| |
− | |align=center|-2147483628 ~ 2147483647
| |
− | |-
| |
− | |align=center|long
| |
− | |align=center|8바이트
| |
− | |align=center|-9223372036854775808 ~ 9223372036854775807
| |
− | |-
| |
− | |align=center|float
| |
− | |align=center rowspan="2"|실수
| |
− | |align=center|4바이트
| |
− | |align=center|3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits)
| |
− | |-
| |
− | |align=center|double
| |
− | |align=center|8바이트
| |
− | |align=center| 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 선언 <ref name='변수의 정의와 종류'>변수 타입의 종류[https://webcoding.tistory.com/167]〉, 《심플한 코딩 백과사전》</ref>
| |
| | | |
| {{각주}} | | {{각주}} |
− |
| |
− | == 참고자료 ==
| |
− | * 〈[http://tcpschool.com/java/java_datatype_basic TCPSCHOOL : 기본 타입]〉
| |
− | * 〈[https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99) 위키백과 : 변수(컴퓨터 과학)]〉
| |
− | * 〈[https://namu.wiki/w/%EB%B3%80%EC%88%98 나무위키 : 변수]〉
| |
− | * 〈[https://blog.naver.com/korn123/30097861449 Java Tip]〉
| |
− | * 〈[http://tcpschool.com/java/java_datatype_variable TCPSCHOOL : 자바 변수]〉
| |
− | * 〈[https://blog.naver.com/nkind/222017581135 변수명 표기법]〉
| |
− | * 〈[https://dangle.tistory.com/7 명명 권장사항]〉
| |
− | * 〈[http://tcpschool.com/c/c_datatype_variable 규칙 예시]〉
| |
− | * 〈[https://webcoding.tistory.com/167 변수 타입의 종류]〉
| |
− |
| |
− | == 같이 보기 ==
| |
− | * [[변수]]
| |
− |
| |
− | {{프로그래밍|검토 필요}}
| |