-
변수(variable)개발/자바JAVA 2024. 1. 16. 16:24
▶변수
변수란 무엇일까?
변수란 수학적으로는 변하는 수이다.
일상생활에서는 변수가 발생했다라고 많이 쓴다. 예측하지 못한 상황이 발생했다는 뜻이다
그렇다면 프로그램 상에서 변수란?
메모리(RAM)에 값을 기록하기 위한 공간이다.
출처 : kh정보교육원 교육자료.pdf 값을 담는다 라고 생각하면 된다.
▶변수를 사용하는 이유
변수에 값을 담는 이유는 무엇일까?
프로그램 실행시 사용할 값(Data)이 있다면 그 값은 먼저 메모리에 기록되어야 한다.
그런데, 메모리는 한정적이다.
메모리에 수없이 많은 정보를 넣어두고 쓴다면 아무리 큰 데이터라도 결국엔 과부하가 걸리기 마련이다.
변수의 특징중 하나는 휘발성이다.
즉. 변수에 값을 담고, 메모리에 변수를 기록한다.
해당 변수가 필요 없어진다면, 메모리에서는 변수를 휘발시킨다.
이런 의미에서 변수를 사용한다면 매우 효율적으로 코드를 짤 수 있다.
그 외 변수를 사용하는 이유
> 값에 의미를 부여할 목적으로 사용 -> 가독성이 좋아짐.
> 단 한번 값을 기록해 두고 필요할 때마다 꺼내서 사용할 수 있다. -> 재사용성 증가로 인한 코드량 감소.
> 유지보수를 보다 쉽게 할 수 있음 -> 유지보수에 용이.
간단한 예를 들어보자.
장부관리 프로그램을 만들려 하는데
204450 원하는 물건이 하나 있다고 하자.
A 씨에겐 50개,
B 씨에겐 40개.
C 씨에겐 350개...
.
.
.
변수를 쓰지 않는다면
이런 식으로 하나하나 물건의 가격을 다 써줘야 한다.
근데 구매자가 1000명이 넘거나, 가격이 억대인 경우를 가정해 보면 참으로 끔찍하지 아니할 수 없다.
그래서 변수로 묶어주는 것이다.
이렇게 변수를 선언해 주고
훨씬 깔끔해진 모습이다.
▶ 변수의 선언
변수를 선언한다라는 것은
> 메모리 공간에 데이터를 저장할 수 있는 공간을 확보해 두겠다는 말임. ( 값을 담는 건 아님)
방법은 쉽다.
자료형 : 변수의 크기 및 모양을 지정하는 부분이다.
참고로 자료형 타입은 다음과 같다.
이렇게 변수를 선언하게 된다면
*참고로 자바에서 =은 "같다"가 아니라 "값을 담겠다(대입)"라는 뜻이다.
메모리 공간 어딘가에
이런 식으로 메모리를 할당받게 된다.
그럼 우리는 이제 저기서 꺼내 쓰기만 하면 된다.
아주 EZ 하다.
▶ 변수의 명명 규칙
> 대소문자가 구분되며, 길이 제한이 없음.
> 예약어를 사용하면 안됨.
> 숫자로 시작하면 안됨
> 특수문자는 _, $만 허용됨.
> 첫 글자는 소문자로 쓰되, 카멜기법을 적용해야함 ex) userName
> 같은 영역( {} 중괄호) 안에서는 동일한 이름의 변수를 선언할 수 없다.
> 해당 영역 ( {} 중괄호) 에 선언된 변수는 해당 영역 그 안에서만 사용 가능하다.(지역변수 개념)
▶ 타입들과 저장공간
정수형
booelan isTrue;
byte bNum; // 1byte(-128~127)
short sNum; // 2byte(-327xx~327xx)
int iNum; // 4byte(-21억xxx~ 21억xxx) > 기본타입
long lNum; //8byte(훨씬 더 큰 범위)
실수형
float fNum; //4byte(소숫점 뒤에 7자리까지 표현 가능)
double dNum; // 8byte(소숫점 뒤에 15자리까지 표현 가능)
위 변수들을 선언하면
stack 공간에 다음과 같이 저장(아직 메모리에 값이 들어가진 않음)
문자형
char ch; //(2byte)
문자열형(문자들이 나열되어있는 형태)
> 참조자료형(실제 값은 stack이 아닌 heap영역에 담긴다)
String str; //(표면상으로는 4byte, 실제 값은 heap영역에 닮기기 때문에 달라진다)
▶변수의 초기화
> 제일 첫번째로 대입하는 행위가 초기화임; 처음으로 돌린다는 뜻이 아님
▶값 대입
isTrue = true;
bNum =1;
sNum = 2;
iNum = 4;
lNum = 8L; // long 타입은 가독성을 위해 소문자나 대문자 L을 표기해준다.(안써줘도 됨)
fNum = 4.0f ; //float타입은 반드시 f를 붙여줘야 함. 메모리 할당량을 초과하기 때문
ch = 'A'; //반드시 홑따옴표 안에 적어야함.
이렇게 값을 대입한다면
이런식으로 할당된 메모리에 값이 들어가게 된다.
※ int iNum = 4; 이런식으로 선언과 동시에 바로 대입도 가능!
참고로
str = "ABC"; //반드시 쌍따옴표 안에 기술해야 함.
참조자료형은 stack영역에 할당된 영역보다 더 많이 들어갈 수도 있기때문에 heap영역에 저장된다.
'개발 > 자바JAVA' 카테고리의 다른 글
출력메소드(printf) (0) 2024.01.18 오버플로우, Scanner (0) 2024.01.17 메인 메서드 호출 (0) 2024.01.16 코드의 흐름 (0) 2024.01.16 메서드(method)와 클래스의 이해 (2) 2024.01.16