- 객체는 변수들의 컬렉션으로 정의할 수 있다.
- 객체에는 상태와 행위가 있다고 생각하면 이해하기 쉽다.
- 원시 타입을 제외하면 자바 언어의 다른 모든 변수들은 참조 타입 이다. 원시 타입과 다른점은 빈 객체를 의미하는 null 이 존재한다는 것이다.
참조 타입의 의미
- 원시 타입은 int i = 42 변수가 선언되었을때 42라는 값이 메모리에 할당 되고 int j = i라는 형식으로 i에의해 표현되는 값이 할당되었을 때 메모리의 다른 위치에 같은 값을 할당한다.
- 할당되고 나면 i는 j 값에 영향을 미칠 수 없다.
- 자바에서 new ArrayList(20) 같은 구문은 데이터를 저장하는데 필요한 영역을 메모리에 요구
- List myList = new ArrayList(20) 구문으로 생성된 객체를 변수에 할당할 때 myList는 할당된 메모리 위치를 가리킨다.
- 한 인스턴스에 변경이 생기면 다른 인스턴스가 접근했을 때 영향을 미친다.
@Test
public void objectMemoryAssigment() {
List<String> list1 = new ArrayList<>();
list1.add("entry in list1");
assertTrue(list1.size() == 1);
List list2 = list1;
list2.add("entry 2");
assertTrue(list1.size() == 2);
}
'java' 카테고리의 다른 글
객체의 가시성 수정자는 어떻게 작동하는가? (0) | 2017.11.15 |
---|---|
final 키워드는 객체 참조에 어떤 영향을 미치는가? (0) | 2017.11.15 |
왜 Integer.MIN_VALUES에 대응하는 양수가 없는가? (0) | 2017.11.15 |
몇 가지 자바 원시 타입의 이름을 지정하고 이 타입이 JVM에서 어떻게 처리되는지 설명 (0) | 2017.11.15 |
빌더 패턴은 얼마나 유용한가? (0) | 2017.11.15 |