TIL/Java

[Java] 변수(Variable), 자료형(Type)

yndev 2021. 12. 20. 01:46

변수

메모리(RAM)에 시간에 따라 변하는 값을 기록하기 위한 공간

 

변수의 사용 목적

  1.  값에 의미를 부여하기 위한 목적 (의미 전달이 쉬워야 코드를 읽기 쉽고, 협업 및 유지보수에 유리하기 때문
  2.  한 번 저장해둔 값을 재사용하기 위한 목적 (변수를 이용하여 코드를 작성하면, 값을 변경할 때도 보다 간편하게 변경할 수 있다.
  3. 시간에 따라 변하는 값을 저장하고 사용할 수 있다. (변하는 값을 저장하기 위한 공간이다.)

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);