> For the complete documentation index, see [llms.txt](https://docs.sysout.co.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sysout.co.kr/base-language/java/beginner/operator/assignment-operator.md).

# 대입 연산

## 대입 연산

이 문서에서는 `대입 연산`에 대해서 살펴본다.

### 대입 연산이란

대입(Evaluation)이라는 것은 **문자가 있는 식에서 문자 대신에 숫자를 넣는 것**을 말한다. 프로그래밍에서는 변수에 값을 넣는 것을 의미한다.

```java
int a;
```

위와 같은 변수 선언이 있을 때, 우리는 위의 변수를 사용할 수 없다. 어떠한 값도 대입되어 있지 않기 때문에 `a`는 사용이 불가능한 쓰레기값을 가진 상태라고 볼 수 있기 때문이다. 따라서 값을 `대입`해서 사용이 가능한 상태로 만들어줘야 한다. 이를 초기화라고 한다.

```java
int a;
a = 10;

//또는

int a = 10;
```

대입은 변수를 만들면서 해도 되고, 만들고 나서 해도 된다. 또한 여러번 할 수도 있는데, 이 때 먼저 대입한 값은 사라진다는 것에 유의해야 한다.

```java
int a;
a = 10;
a = 20;
a = 30;
System.out.println(a);//30
```

정수 뿐 아니라 다른 형태의 변수들도 모두 각자의 형태에 맞게 대입이 가능하다.

```java
byte a = 10;
short b = 20;
int c = 30;
char d = 'A';
long e = 50L;

float f = 3.14f;
double d = 5.67;

boolean e = true;

String str = "hello";
```

### 변수간의 대입

변수간의 대입도 가능하다. 단, 대입 연산자 우측에는 반드시 값이 존재해야 한다.

```java
int a;
int b = 10;

int c = a;//불가능. a에 값이 대입되지 않음(쓰레기값 상태)
int d = b;//가능. b에 값이 대입되어 있음(10)
```

이 때 b와 d에는 같은 값이 들어가게 된다.

### 식 대입

식을 대입하도록 코드를 작성할 수 있다. 이 경우 식은 **계산**되어서 대입된다.

```java
int a = 10;
int b = 20;
int c = a + b;
```

c를 출력하면 30이 나오게 되며, 계산이 먼저 이루어지고 대입이 된다는 것을 알 수 있다. 즉, **대입은 가장 마지막에 실행**되는 연산이라는 것을 알 수 있다.
