기본 개념

기본자료형은 변수로 값에 접근 한다. 하지만 참조자료형은 변수에 할당값이 주소값(위치)이기 때문에 곧바로 값에 접근할수 없다.

참조한다는 말은 주소값을 통해 특정 데이터 값에 접근할 수 있다는 말이다.

일반적으로 힙에 인스턴스(객체)를 생성하고, 이를 참조하기 위해 참조변수(주소값)를 스택에 생성한다.

스택에 생성된 참조 변수는 참조값을 갖게 되고, 그때 부터 객체라고 부르게 된다.

     Book b = new Book();

[꾸미기]1111.jpg

기본 예제

package com.java.datatype03.refer;

//커피클래스 생성 (틀)
public class Coffee {

	//속성
	public int coffeeNo;
	public String coffeeName;
	public int coffeePrice; 
	
	//메소드(행위,기능)
	public void coffeeRoasting() {
		System.out.println("커피를 로스팅 한다.");
	}
	
}

package com.java.datatype03.refer;

public class Cafe {

	public static void main(String[] args) {
		// 커피 판매 프로그램

		// 자료형 참조변수(객체) 인스턴스 생성 연산자 생성자 ->heap Coffee 인스턴스 생성
		Coffee c = new Coffee();

		// 값을 할당
		c.coffeeNo = 1;
		c.coffeeName = "아메리카노";
		c.coffeePrice = 1500;

		System.out.println("-----" + c.coffeeName + "--------");
		System.out.println("커피번호 [" + c.coffeeNo + "]");
		System.out.println("커피이름 [" + c.coffeeName + "]");
		System.out.println("커피가격 [" + c.coffeePrice + "]");
		c.coffeeRoasting();

		Coffee c1 = new Coffee();

		// 값을 할당
		c1.coffeeNo = 2;
		c1.coffeeName = "까페라떼";
		c1.coffeePrice = 3000;

		System.out.println("-----" + c1.coffeeName + "--------");
		System.out.println("커피번호 [" + c1.coffeeNo + "]");
		System.out.println("커피이름 [" + c1.coffeeName + "]");
		System.out.println("커피가격 [" + c1.coffeePrice + "]");
		c.coffeeRoasting();

		Coffee c2 = new Coffee();

		// 값을 할당
		c2.coffeeNo = 3;
		c2.coffeeName = "딸기 스무디";
		c2.coffeePrice = 3000;

		System.out.println("-----" + c2.coffeeName + "--------");
		System.out.println("커피번호 [" + c2.coffeeNo + "]");
		System.out.println("커피이름 [" + c2.coffeeName + "]");
		System.out.println("커피가격 [" + c2.coffeePrice + "]");

	}

}