TIL: 스스로 이해한 것을 바탕으로 정리하였기에 오류가 있을 수 있습니다.
변수
변 (變 변할 변) + 수 (모든 데이터) : 변할 수 있는 모든 데이터
메모리(RAM)에 값을 기록하기 위한 공간(Box)라고 생각하면 쉽다.
명시적으로 입력하는 값이 아닌 사용자가 입력하는 값을 기록할 때
프로그램 실행 시 사용할 값(Data)이 있다면 그 값은 먼저 메모리에 기록되어야 하는데,
메모리 공간에 값을 기록하려면 바로 가지고 올 수 없고 변수부터 만들어야 한다.(박스 같은 공간)
하나의 박스에 오로지 하나의 값만 입력할 수있다.
학습목표
1. 변수란?
2. 변수를 왜 써야 되는지
3. 변수를 어떻게 쓰면 되는지
4. 변수명은 어떻게 지으면 되는지 (naming rules)
변수 사용 목적
아래의 코드를 보고 비교를 해보자!
변수 사용 전의 코드 모습이다. 결과물은 잘 출력되나, 무슨 의미인지 파악하기 어렵다. (문제점 1)
100의 포인트에 10의 보너스를 10명에게 준다. 세금은 10이고, 그것을 다시 사람 수로 나눈 것이다.
자, 이제 변수를 선언해보자.
[표현법 ] 자료형 변수명 ;
비교했을 때 드러나는 변수 사용 목적
- 우선적으로 값에 의미를 부여해놓고자 하는 목적으로 사용 (가독성이 좋아진다)
- 한번 값을 저장해 두고 계속적으로 사용할 목적으로 사용
- 유지보수에 용이할 목적으로 사용 (ex. 포인트가 70으로 바뀐다면 int point = 70; 값만 바꿔주면 된다.)
변수의 선언
메모리 공간에 데이터를 저장할 수 있는 공간을 할당하는 것
(기록할 값을 위한 변수를 메모리 공간에 확보해 놓는 과정 == 변수(박스) 만드는 과정)
[표현법] 자료형 변수명; (값은 아직 없고 박스만 만들어놓은 상태)
자료형: 어떤 값을 담아낼지, 어느 정도의 크기의 값을 담아낼지에 대한 변수의 크기 및 모양을 정하는 부분 ex. int, double, String
* 주의사항
- 변수명은 반드시 소문자로 시작 (낙타 표기법)
- 해당 영역({})에 선언한 변수는 해당 영역에서만 쓸 수 있음 (다른 메소드에서는 쓸 수 없음) : 지역변수
- 해당 영역({})에 동일한 변수명으로 선언 불가 (중복 오류: duplicate)
자료형 종류
논리(참, 거짓) - boolean
문자 - 문자 - char
- 문자열 - String
숫자
- 정수형 - byte
- short
- int *
- long
- 실수형 - float
- double * (float보다 더 정확한 값을 보관할 수 있다)
* 논리형 변수 선언 * 정수형 변수 선언
boolean isTrue; byte bNum;
short sNum;
* 문자형 변수 선언 int iNum;
char ch; long lNum;
데이터 저장 단위
저장 공간이 제한적이기 때문에 저장 크기에 대한 기준과 cpu가 데이터를 처리할 때 일정한 기준 필요하다
비트(bit)
컴퓨터가 나타내는 데이터의 저장 최소 단위로서 2진수 값 하나를 저장할 수 있는 메모리 공간을 의미
8bit = 1 byte
바이트(byte)
데이터 처리 또는 문자의 최소 단위로서 8개의 비트가 모여 하나의 바이트가 구성된다
각 자료형마다 메모리 크기가 다르므로 적당한 자료형을 선택하는 것이 중요.
변수에 값 대입하기 (담기)
[표현법] 변수명 = 값;
// 1. 논리형
boolean isTrue; // 1byte
// 2. 숫자형
// 2_1. 정수형
byte bNum;
short sNum;
int iNum; -> 정수형들 중 가장 대표적인 자료형 (기본형) -약 21억 ~ 약 21억
long lNum;
// 2_2. 실수형
float fNum;
double dNum; -> 실수형들 중 가장 대표적인 자료형(기본형) float보다 더정확한 값을 담을 수 있음
// 3. 문자형
char ch;
// 4. 문자열 (참조자료형)
String str;
isTrue = true;
bNum = 1;
sNum = 2;
iNum = 4;
lNum = 8L; -> long형 변수에 값을 담을 때는 뒤에 L을 붙여준다. (권장)
fNum = 4.0f; -> float 뒤에는 f를 붙여야 한다. (반드시)
dNum = 8.0;
ch = 'A';
ch = '꽃'; 중복되는 경우, 뒤에 ch가 덮어 씌운다. 'A'는 사라짐
str = "ABC";
{
System.out.println("isTrue 의 값 : " + isTrue);
}
> isTrue 의 값 : true 라고 출력된다.
변수 선언과 동시에 값 대입하기 (초기화)
[표현법] 자료형 변수명 = 값;
기본자료형
//1. 논리형
boolean isTrue = false;
//2_1. 숫자형 (정수형)
byte bNum = 1;
short sNum = 2;
int iNum = 4;
long lNum = 8L;
//2_2. 숫자형 (실수형)
float fNum = 4.0f;
double dNum = 8.0;
//3. 문자(한글자)형
char ch = '가';
//참조자료형
//4. 문자열
String str = "I오전반";
//번외
//엄청 큰 값을 담아야만 할 때 가동성 좋게 '_' 언더바를 이용할 수 있다.
//단, 숫자값만이 담긴다.
int etc = 999_999_999;
변수 명명 규칙
1) 변수명 중복 불가
2) 대소문자는 구분된다
3) 예약어(이미 자바에서 사용되고 있는 키워드들) 사용 불가
4) 숫자는 사용가능하나, 시작하는 것은 불가
5) 특수문자는 _와 $만 사용가능하며, 그 외엔 사용 불가
6) 낙타표기법 권장
-> 2번이 권장사항
7) 한글 사용 가능하나 영문 권장 (한글을 사용하지않는 환경에선 오류가 발생하기 때문)
**정리**
변수 : 값(리터럴)을 기록하는 공간
값(리터럴) : 프로그램상에 필요한 명시적인 값/ 또는 사용자가 마우스 또는 키보드로 입력한 값
'Java' 카테고리의 다른 글
[Java]스캐너? 스캐너 정의와 호출, 스캐너를 활용하여 입력값 출력하기 (0) | 2020.12.18 |
---|---|
[Java] 문자와 문자열 그리고 숫자의 정수와 실수, 연산 (0) | 2020.12.17 |
[Java/프로그래밍] 용어정리 (0) | 2020.12.17 |
[Eclipse]Import: 메인메소드가 없는 클래스파일 다른 클래스파일 메인메소드에서 실행시키기 (0) | 2020.12.16 |
IDE? 이클립스란? (0) | 2020.12.16 |
댓글