Back-end/JAVA
16. Class - Field(필드)
kade__
2021. 6. 23. 13:32
-Field(필드)
- Class블록 안에서 변수를 선언해주는 부분
- 초기화도 할수 있지만 특별한 경우가 아니면 초기화 없이 선언만 한다
- Field, Method, Constructor 모두 위치가 정해져 있는 건 아니지만 상단에 Field, 중간에 Constructor, 하단에 Mehtod를 작성해주는 것이 일반적이다
- Field에서 선언해주는 변수를 맴버변수라고 부르며 외부에서도 값을 가져오거나 변경이 가능하다
-
public class Test { //Field String str; int num; boolean flag; }
- 변수의 타입은 기본타입부터 레퍼런스 타입까지 모두 선언과 사용이 가능하다
-
public class TestExample { public static void main(String[] args) { Test test = new Test(); System.out.println(test.str); test.str = "Hello"; } }
- 위의 코드와 같이 main이 들어간 TestExample클래스에서 Test 클래스를 불러와서 출력하거나 변경하는 것이 가능하다.
- Field에서 선언한 변수들의 초기값은 앞선 포스팅에 나와있듯이 기본타입은 0, 0.0, false 등이고 참조 타입의 기본값은 모두 null값으로 초기화된다.
- 변수의 사용은 인스턴스 변수, 즉 test뒤에. 을 붙여 사용해주면 된다.
- Test Class를 사용해 여러 개의 인스턴스(객체)를 생성했을 때 각 인스턴스 별로 갖고 있는 메모리의 주소 값이 다르므로 동일한 내용이 들어있다 해도 각 인스턴스 안에 변수는 다른 값을 가지고 있다.
-
public class TestExample { public static void main(String[] args) { Test test1 = new Test(); Test test2 = new Test(); test1.str = "Hello"; System.out.println(test2.str); } }
- 위와 같이 코드를 작성했을 때 test2.str의 값은 null이 나오게 된다.
- test 1.str의 주소와 test2.str의 주소가 다르기 때문에 이런 결과가 나오게 되는데 만약 test 1과 test2의 주소가 같은 주소를 참조한다면 test2.str 또한 Hello가 되었을 것이다.
- 이를 통해 인스턴스 생성 시 각각의 인스턴스는 다른 주소 값에 새로 생성된다는 걸 알 수 있다.