[Java] 변수(Variable), 자료형(Type)
변수
메모리(RAM)에 시간에 따라 변하는 값을 기록하기 위한 공간
변수의 사용 목적
- 값에 의미를 부여하기 위한 목적 (의미 전달이 쉬워야 코드를 읽기 쉽고, 협업 및 유지보수에 유리하기 때문
- 한 번 저장해둔 값을 재사용하기 위한 목적 (변수를 이용하여 코드를 작성하면, 값을 변경할 때도 보다 간편하게 변경할 수 있다.
- 시간에 따라 변하는 값을 저장하고 사용할 수 있다. (변하는 값을 저장하기 위한 공간이다.)
1. 값에 의미를 부여하기 위한 목적
아래처럼 작성하면 어느 값이 급여인지, 보너스인지 알 수 없다.
System.out.println("보너스를 포함한 급여" + (1000000 + 200000) + "원");
아래처럼 의미를 부여하게되면 어느 값이 급여인지, 보너스인지 알 수 있다.
int salary = 1000000;
int bound = 200000;
System.out.println("보너스를 포함한 급여" + (salary + bound) + "원");
2. 한 번 저장해둔 값을 재사용하기 위한 목적
3명의 고객에게 100포인트를 지급해주는 내용을 출력하도록 작성해보자.
지급해야 하는 포인트가 변경된다면 변수에 대입한 값만 변경하면 적용이 된다.
int point = 200;
System.out.println("1번 고객에게 포인트를" + point + "포인트 지급하였습니다.");
System.out.println("2번 고객에게 포인트를" + point + "포인트 지급하였습니다.");
System.out.println("3번 고객에게 포인트를" + point + "포인트 지급하였습니다.");
3. 시간에 따라서 변경되는 값을 저장하고 사용할 수 있다.
변수는 하나의 값을 저장하고 사용하기 위한 공간이기 보다, 변하는 값을 저장하기 위한 공간이다.
int sum = 0;
sum = sum + 10;
System.out.println("sum에 10을 더하면 현재 sum의 값은? " + sum);
sum = sum + 10;
System.out.println("sum에 10을 더하면 현재 sum의 값은? " + sum);
sum = sum + 10;
System.out.println("sum에 20이 있었는데 현재 sum의 값은? " + sum);
첫 줄 sum = 0 이었고, 둘 째줄 0 + 10으로 더해줘서 sum = 10, 계속해서 20, 30.. 변수가 변한다.
자료형(Type)
자료형이란 : 다양한 값의 형태별로 어느 정도 크기를 하나의 값으로 취급할 것인지 미리 Complier와 약속한 키워드이다.
이러한 자료형은 기본자료형(Primite type)과 참조자료형(Reference type)으로 나누어진다.
그 중 기본자료형 8가지이다. (String 제외)
논리 - boolean (1byte)
문자 - 문자 - char (2byte)
- 문자열 - String (참조형)
숫자 - 정수형 - byte (1byte), short (2byte), int (4byte), long (8byte)
- 실수형 - float (4byte), double (8byte)
데이터 저장 단위
저장 공간이 제한적이기 때문에 저장 크기에 대한 기준과 CPU가 데이터를 처리할 때 일정한 기준 필요
-비트(bit) : 컴퓨터가 나타내는 데이터의 저장 최소 단위로서 2진수 값 하나를 저장할 수 있는 메모리 공간
-바이트(byte) : 데이터처리 또는 문자의 최소 단위로서 8개의 비트가 모여 하나의 바이트가 구성됨
1bit | 1bit | 1bit | 1bit | 1bit | 1bit | 1bit | 1bit |
1byte(8bit)
변수의 선언
1. 변수를 준비한다. (선언)
2. 변수에 값을 대입한다. (값 대입 및 초기화)
3. 변수를 사용한다.
1. 변수를 준비한다. 선언)
기본자료형(Primitive type)
-정수를 취급하는 자료형은 4가지가 있다.
byte bnum; //1byte
short snum; //2byte
int inum; //4byte
long lnum; //8byte
-실수를 취급하는 자료형은 2가지가 있다.
float fnum; //4byte
double dnum; //8byte
-문자를 취급하는 자료형
char ch; //2byte
-논리값을 취급하는 자료형
boolean isTrue; //1byte
문자열을 취급하는 자료형
주소값은 4byte 정수형이다.
String str; //4byte
2. 변수에 값을 대입한다. (대입 및 초기화)
위에서 한 변수 선언은 메모리에 값을 저장하기 위해 공간만 생성해 둔 상태이다.
그 공간에 대입연산자를 이용하여 자료형에 저장하기로 한 형태의 값을 저장할 수 있다.
만약, 약속 내용과 다른 형태의 값을 대입하려고 하면 Complier는 에러를 발생시킨다.
정수를 취급하는 자료형에 값 대입
대입 연산자의 실행 방향은 오른쪽에서 왼쪽이다.
즉, 오른쪽에 있는 값을 왼쪽 공간에 대압한다는 의미이며, 왼쪽에는 항상 공간, 오른쪽에는 항상 값이 온다.
bnum = 1;
snum = 2;
inum = 4;
lnum = 8L; //소문자로 'l'을 써도 되지만 글꼴에 따라 숫자 '1'과 혼선이 빚어질 수 있어 대문자로 하는 것이 권장.
실수를 취급하는 자료형에 값 대입
//fnum = 4.0;
fnum = 4.0f; //실수 뒤에 'f'를 붙여야 한다. 대문자 'F'도 가능하지만 소문자를 사용하는 것이 일반적이다.
dnum = 8.0;
문자를 취급하는 자료형에 값 대입
ch = 'a';
ch = 97; //'a'는 97이라는 숫자 값을 가지므로 숫자로도 char에 저장 가능하다.
논리를 취급하는 자료형에 값 대입
isTrue = true;
isTrue = false; //true 혹은 false 중 한 가지의 값만 사용 가능하다.
문자열을 취급하는 자료형에 값 대입
str = "a";
일반적으로 사용하는 값을 독특한 형태가 아닌 일반적인 형태로 사용할 수 있는 자료형을 대표자료형이라고 하며
정수형은 int, 실수형은 double이 대표 자료형이다.
정수의 경우 일상 생활에서 많이 사용되는 숫자의 범위는 byte, short로는 표현이 불가능한 경우가 많아 특수한 경우가 아니면 byte와 short는 잘 사용하지 않는다.
실수의 경우 정확도를 기준으로 4byte 자료형보다 8byte 자료형이 더 정확한 실수를 표현할 수 있기 때문에
double을 대표 자료형으로 사용하고 flaot는 특수한 목적이 있는 경우에만 사용하게 된다.
선언과 동시에 초기화
int point = 100;
int bonus = 10;
3. 변수를 사용한다.
변수에 저장된 값 출력하기
System.out.println(bnum); //1
System.out.println(snum); //2
System.out.println(inum); //4
System.out.println(lnum); //8
System.out.println(fnum); //4.0
System.out.println(dnum); //8.0
System.out.println(ch); //a
System.out.println(isTrue); //false
System.out.println(str); //a
변수를 이용해서 연산하기
System.out.println(point + bonus);