참조변수
- 메모리의 주소값을 가지고 있는 변수
- 메모리 주소를 참조하여 데이터를 가져오기 때문에 참조변수라고 한다.
- 객체 생성 시, 객체의 메모리 주소가 변수에 할당된다.
- 종류: 클래스, 인터페이스, 열거, 배열
객체, 클래스, 인스턴스
따라서, 객체를 클래스의 생성자를 통해 인스턴스화 하면 해당 인스턴스는 메모리 주소를 가지는 참조변수이다.
객체와 클래스, 인스턴스의 차이는 다음과 같다.
객체: 구현해야할 대상(Object)
클래스: 객체를 추상화한 것. 설계도.
인스턴스: 클래스(설계도)를 바탕으로 객체를 소프트웨어 세계에 실체화(인스턴스화)한 것.
//구현 대상(객체): 홍길동, 20세
//클래스로 추상화
public Class Person{
private String name;
private int age;
public void Person(){}
public void Person(String name, int age){
this.name = name;
this.age = age;
}
}
//main생략
//인스턴스화
Person gildong = new Person("홍길동", 20);
//객체는 홍길동, 클래스는 Person, 인스턴스는 gildong이라는 참조변수가 된다.
위의 코드에서 객체는 홍길동, 클래스는 Person, 인스턴스는 gildong이다.
new 연산자
생성자의 new 연산자는 새로운 인스턴스와 메모리 주소를 생성해 반환하므로,
동일한 객체를 여러개 생성할 경우, 각기 다른 메모리 주소를 가지는 참조변수가 생성된다.
Person gildong1 = new Person("홍길동", 20);
Person gildong2 = new Person("홍길동", 20);
변수명 | 주소 | 데이터 |
gildong1 | 1001 | "홍길동", 20 |
gildong2 | 1002 | "홍길동", 20 |
gildong1이 가지고있는 데이터와 gildong2가 가지고 있는 데이터는 메모리 상에서 각기 다른 주소에 저장된다,
따라서 gildong1과 gildong2는 다른 주소값을 가진다.
'Language > java' 카테고리의 다른 글
java 기초 8: 상속 (0) | 2023.01.05 |
---|---|
java 기초 7: String 클래스 (0) | 2023.01.04 |
java 기초 5: 클래스와 객체 (0) | 2023.01.03 |
java 기초 4: 반복문(while, do~while, for)과 탈출(break, continue) (0) | 2023.01.02 |
java 기초 3: 조건문(if, switch) (0) | 2023.01.02 |