[Java] 변수

soheeoott·2021년 8월 27일
0

Java

목록 보기
4/12

변수의 필요성

컴퓨터 메모리(RAM)는 값을 저장할 수 있는 수많은 번지(주소)들로 구성되어 있다.
데이터를 메모리에 저장할 때, 어디에 어떻게 저장할지를 정해놓지 않으면 프로그램 개발이 어려워진다.
프로그래밍 언어는 이 문제를 해결하기 위해 변수라는 개념을 사용한다.


변수 (Variable)

값을 저장할 수 있는 메모리 번지에 붙여진 이름을 의미한다.
메모리 번지에 값을 저장하고 읽을 수 있다.
정수, 실수 등 다양한 타입의 값을 저장할 수 있다.

데이터에 x라는 이름을 붙이면 이 x는 변수이다.
변수를 정수형 타입으로 선언하면 변수에 저장할 데이터는 정수 값이어야 한다.

변수 선언

변수를 사용하려면 우선, 변수를 선언해야 한다.
어떤 타입의 데이터를 저장하는지, 변수의 이름은 무엇인지를 작성해야 한다.

int age; // 정수(int)값을 저장할 수 있는 age 변수를 선언

int : 타입
age : 변수 이름

int x, y, z;

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

변수 이름

자바 언어에서 정한 명명 규칙을 지켜 작성해야 한다.

작성 규칙
첫 번째 글자는 문자이거나 $, _이어야 하고 숫자로 시작할 수 없다. 가능 : price, $price, _price
불가능 : 1price, @price
대소문자를 구분한다. hello와 Hello는 다른 변수
첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 작성한다.
camelcase 기법이라 한다.
minSpeed, maxSpeed, firstName, lastName
문자 수(길이)의 제한이 없다.
자바 예약어는 사용할 수 없다.

예약어
자바 언어에서 의미를 가지고 사용되는 언어이다.

분류 예약어
기본 타입 boolean, byte, char, short, int, long, float, double

접근 제한자 private, protected, public
클래스와 관련
class, abstract, interface, extends, implements, enum
객체와 관련 new, instanceof, this, super, null
메소드와 관련
void, return
제어문과 관련
if, else, switch, case, default, for, do, while, break, continue
논리값
true, false
예외처리 관련 try, catch, finally, throw, throws
기타
package, import, synchronized, final, static

변수의 값 저장

변수에 값을 저장할 때 대입 연산자(=)를 사용한다.
변수를 선언한 후 대입 연산자를 이용하면 오른쪽의 값을 왼쪽의 변수에 저장한다.

int age; // 변수 선언
age = 7; // 값 저장

변수 초기화
변수에 최초로 값이 저장되면, 메모리에 변수가 생성된다.
이를 변수의 초기화라 하고, 이 때의 값은 초기값이다.

초기화를 하지 않은 변수는 메모리에서 값을 읽을 수 없다.
Variable 'number' might not have been initialized

// 컴파일 오류 발생
int number; // 변수 number 선언, 초기화 하지 않음
int sum = number + 7; // number 값을 읽고, 7을 더해서 sum에 저장
// 올바른 작성법
int number; // 변수 number 선언
number = 7; // number에 초기값 7을 대입
int sum = number + 7; // number 값을 읽고, 7을 더해서 sum에 저장

변수 사용

변수를 사용하면 변수에 저장된 값을 출력하거나 연산에 사용할 수 있다.

int hour = 7;
int minute = 7;

System.out.println(hour + "시간" + minute + "분");

문자열인 "시간", "분"으로 인해 hour, minute 값이 정수이지만 문자열로 변경되고 문자열과 결합된다.

변수 값 복사
변수에 저장된 값은 다른 변수의 값으로 저장될 수 있다.

int x = 10;
int y = 5;
y = x; // x에 저장된 값을 변수 y에 복사

이때 y에 저장되어 있던 값 5는 사라지게 된다.

int x = 10;
int y = 5;

int temp = x; // 값(3), 새로운 변수에 저장
x = y; // 값(5)
y = temp; // 값(3)

새로운 변수를 사용하면, x의 값과 y의 값을 교환할 수 있다.

로컬 변수 (Local Variable)

변수를 선언할 때 변수가 어떤 범위에서 사용되는지를 고려해야 한다.
메소드 블록 내에 선언된 변수를 로컬 변수라 한다.
로컬 : 해당 지역(메소드)에서만 사용할 수 있다라는 의미이다.
메소드 블록 내에서만 사용되고 메소드의 실행이 끝나면 자동으로 메모리에서 제거된다.

public class Hello {
 
    public static void main(String[] args) {
 
        int tempNum1 = 1;
        int tempNum2 = 2;
        
        // tempNum1, tempNum2 사용 가능
    } // 메소드 블록 끝
    // tempNum1, tempNum2 사용 불가
}

로컬 변수는 선언된 해당 블록 내에서만 사용 가능하다.

public class Hello {
 
    public static void main(String[] args) {
 
        int tempNum1 = 1;
        int tempNum2 = 2;
 
        if (//) {
            int tempNum3 = 3;
            int tempNum4 = 4;
 
            // tempNum3, tempNum4 사용 가능
        } // if문 블록 끝
        // tempNum3, tempNum4 사용 불가
 
        for (//) {
            int tempNum5 = 5;
            int tempNum6 = 6;
 
            // tempNum5, tempNum6 사용 가능
        } // for문 블록 끝
        // tempNum5, tempNum6 사용 불가
 
        // tempNum1, tempNum2 사용 가능
    } // 메소드 블록 끝
    // tempNum1, tempNum2 사용 불가
}

혼공자 강의를 기반으로 작성하였습니다. 🙏
7강

profile
📚 글쓰는 습관 들이기 📚

0개의 댓글