Java

2. 변수

Jungsoomin :) 2021. 8. 12. 00:25

0.


중요한 프로그래밍 능력 중 하나는 값(data)을 잘 다루는 것이다.

프로그래밍 언어에서 "변수"란, 값을 저장할 수 있는 메모리 공간을 의미한다.

단 하나의 값만 변수에 저장될 수 있으며, 변수에 다른 값을 저장하면, 변수는 다른 값 만을 저장하게 된다.

메모리란 RAM 을 의미하며, 논리적인 저장 공간을 의미한다. 하나의 저장공간의 기본단위는 1 byte 이며, 저장공간 하나 당 연속적인 숫자로 구분되어 있는데, 이 숫자를 "메모리 주소" 라고 한다.

스크린샷 2021-08-11 오후 8 46 54

메모리에 값(data)을 저장하거나 읽을 때는 메모리주소를 이용해야하지만, 연속적인 숫자이므로 사람이 기억하기가 어려워서 일정 공간에 "이름"을 주고 이름을 이용하여 메모리의 값을 읽거나 저장하는 것이 "변수"이다.



1. 변수 선언


  • 변수를 선언하는 이유는 "값을 저장할 공간을 마련하기 위함"이다.
  • 변수를 선언하는 것은 일정한 메모리 공간에 이름을 지어 구분하기 위해서이다.
  • 자료형의 크기 만큼의 메모리공간이 변수 타입에 따라 할당되며, 해당 타입은 "이름"을 통해서 메모리에 값을 저장하고 불러들일 수 있게된다.

스크린샷 2021-08-11 오후 11 39 55

1.1 선언 방법

  • 변수타입 변수이름;

// 변수타입 변수이름;
int age;

1.2 초기화

  • 변수에 처음으로 값을 할당하는 행위를 "초기화"라고한다.
  • 메모리는 컴퓨터 내부의 "공유자원"이기 때문에, 초기화하지 않을 시 다른 프로그램의 쓰레기 값이 저장되어 있을 수도 있다.
  • 변수에 값을 할당할 때에는 =(대입연산자) 를 사용한다.
    • 대입연산자의 의미는 "우항의 값을 좌항에 저장하라" 라는 의미를 가진다.
int age; // 변수선언 , 변수타입 변수이름;

age = 29; // = (대입연산자)로 변수에 값을 할당한다.

int age = 29; // 변수의 선언과 동시에 대입연산자로 초기화할 수 있다.

, (콤마) 를 사용하면 같은 타입의 변수를 한 줄에 선언할 수 있다.

int age, num;

int age = 29, num = 30; // 콤마로 구분하여 같은 타입의 변수를 한 줄에 초기화할 수 있다.

1.3 변수의 종류

  1. 클래스 변수
  2. 인스턴스 변수
  3. 로컬 변수

클래스, 인스턴스 변수는 초기화를 생략할 수 있으나, 로컬 변수는 반드시 초기화해야한다.


2. 변수의 값을 읽어오기


  • 변수의 값을 읽어오기 위해서는 변수 이름으로 읽어오면 된다.

연산자 우선 순위 상 대입연산자는 마지막 순위이므로 덧셈 후 year 변수에 값이 할당된다.

int age = 28 , year = 0;

    year = age + 1993; // 변수의 이름을 적는 것으로 메모리의 공간의 변수를 불러들일 수 있다.
//year = 28 + 1993;
//year = 2021
  • 변수에 변화 값을 저장하면, 출력코드는 수정하지 않아도 된다!
public class VarEx1 {
    public static void main(String[] args) {
        System.out.println(6+3); // 9
        System.out.println(6-3); // 뺄셈
        System.out.println(6*3); // 곱셈
        System.out.println(6/3); // 몫
        System.out.println(6%3); // 나머지

        // 값이 계속 변화한다면 원시 자료형을 기입하는 것으로는 한계가 있다.

        int x = 4, y = 2;

        // 변수 이름으로 메모리에 할당 된 값을 불러들이고 있다.
        System.out.println(x+y);
        System.out.println(x-y);
        System.out.println(x*y);
        System.out.println(x/y);
        System.out.println(x%y);

    }
}

2.1 출력 연산 과정

  1. 변수의 값을 불러온다.
  2. 변수의 값과 문자열을 접합연산한다.
  3. 문자열을 접합연산한다.
  4. 나머지 변수 값을 접합연산한다.
  5. 접합된 문자열을 메소드의 인자로 준다.
System.out.println("X: "+x+" / Y: "+y);

System.out.println("X: "+6+" / Y: "+5);

System.out.println("X: 6"+" / Y: "+5);

System.out.println("X: 6 / Y: "+5);

System.out.println("X: 6 / Y: 5");



3. 두 변수의 값을 교환하기


  • 두개의 변수 사이에서 서로 값을 옮기려면 어떻게 해야하는가?
public class SwitchData {
    public static void main(String[] args) {
        int x = 5, y = 6;

        /*변수의 규칙 상 단 하나의 값만 저장할 수 있기 때문에, 다른 값을 저장하면 기존 값은 없어져버린다.
        * 그러므로 임시 변수를 만들고 x 값을 옮겨놓고 y 를 x 에 대입하고, y 에 임시변수 값을 대입해야한다.
        * */

        int temp; // 0

        temp = x;
        x = y;
        y = temp;

        System.out.println("X: "+x+" / Y: "+y);

    }
}
  1. 변수의 규칙에 따라 단 하나의 값만 저장할 수 있다.
  2. 그러므로 임시 변수에 x 나 y 값을 저장하고, 남은 변수 값을 임시 변수에 옮겼던 변수에 대입하고, 임시 변수값을 남은 변수에 대입해야 한다.

3.1 과정

스크린샷 2021-08-11 오후 11 40 14


4. 명명규칙


  • 프로그래밍에서 사용되는 모든 이름을 "식별자"라고 한다.
  • 같은 영역 (클로져)내에서 서로 구분될 수 있어야한다.
  1. 대소 문자를 구분한다.
  2. 예약어는 사용할 수 없다.
  3. 숫자로 시작하면 안된다.
  4. 사용 가능한 특수문자는 $ 와 _ 뿐이다.

4.1 이외의 권장 규칙

  1. 클래스 이름은 대문자로 시작한다.
  2. 변수나 함수 이름은 소문자로 시작한다.
  3. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
  4. 상수는 대문자로 작성하며 _ 로 단어를 나눈다.
Hello.class // 클래스 이름은 대문자로 시작한다.

public void functionName() {..} // 함수나 변수 이름은 소문자로 시작한다.

int humanAge; // 여러 단어로 이루어진 이름은 단어의 첫글자를 대문자로 한다.

static final int NUMBER_CONST = 0; 
// 상수는 대문자로 작성하며, 다른 단어는 _ 로 구분한다.

'Java' 카테고리의 다른 글

5. printf()  (0) 2021.08.13
4. 상수와 리터럴  (0) 2021.08.13
3. 변수의 타입  (0) 2021.08.12
1. 주석  (0) 2021.08.10
0. 특징, JVM,  (0) 2021.08.10