> 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/advanced/field.md).

# 필드

## 멤버 필드(field)

`멤버 필드`는 다른 말로 `멤버 변수`, `인스턴스 변수`라고도 부르며, 말 그대로 **인스턴스의 구성 데이터를 저장**하는 역할을 수행한다.

### 클래스 생성

시험지를 관리하는 프로그램을 만들기 위해  구성요소를 다음과 같이 분석하였다.

* 시험지(Paper)
  * 이름(String name)
  * 과목(String subject)
  * 점수(int score)

멤버 필드를 배치할 수 있도록 `Paper.java`를 만든다.

{% code title="Paper.java" %}

```java
public class Paper{

}
```

{% endcode %}

### 멤버 필드 배치

`class`에 분석한 내용에 의해 구성 요소를 멤버 필드로 배치한다.

{% code title="Paper.java" %}

```java
public class Paper{
    String name;
    String subject;
    int score;
}
```

{% endcode %}

이는 시험지를 만들기 위해 문서 파일을 만든 것과 같으며, 변수가 3개이므로 3개의 입력란이 존재한다고 볼 수 있다. 멤버 필드에는 데이터를 설정하지 않는 것이 일반적이며, 설정할 경우 인스턴스를 생성하면 해당 데이터로 초기화가 이루어지기 때문에 **초기 값이 고정되어 있는 경우**에만 사용하도록 해야 한다.

그림으로 살펴보면 다음과 같다.

![image.png](http://www.sysout.co.kr/file/image/1422)

### 인스턴스 생성 및 멤버 필드 접근

인스턴스를 생성하는 코드는 다음과 같다.

```java
Paper p = new Paper();
```

생성하면 다음과 같은 형태라고 예상할 수 있다.

![](https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_TNZwLuHV9ipYLbvRq%2F-Mehi76SI7G8aB0ZSXgN%2F-MehjlA4EL9oB9dTvwXI%2Fimage.png?alt=media\&token=a962e7e9-5d2b-499d-b73a-5089850f5adc)

p라는 참조 변수를 통해 인스턴스를 제어할 수 있으므로, 접근을 p를 통해 하도록 다음과 같은 코드를 사용할 수 있다.

![](https://4208234536-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_TNZwLuHV9ipYLbvRq%2F-Mehi76SI7G8aB0ZSXgN%2F-MehjnE-xBp6ZwHk_xea%2Fimage.png?alt=media\&token=d0b180e2-15aa-478b-b7b9-33a86824c419)

```
p.name = "피카츄";
p.subject = "수학";
p.score = 90;
```

설정된 이후의 형태는 다음과 같다.
