안녕하세요~ 

이번 시간에는 자바의 메모리영역과 변수의 관계에 대해 알아보려고 하는데요.

어떤 원리를 통해 활용되는지 살펴볼까요?

기본형, 참조형 변수의 활용

package day30;

public class Test {
	private int no;
	private String name;
	
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void print() {
		System.out.println("no : "+no);
		System.out.println("name : "+name);
	}
}


package day30;

public class Memory {
	public static void main(String[] args) {
		int a = 10;
		double b = 2.67;
		System.out.println(a);
		System.out.println(b);
		System.out.println("*****");
		
		String c = "사과";
		int[] d = new int[10];
		System.out.println(c);
		System.out.println(d);
		System.out.println("*****");
		
		Test t = new Test();
		t.setNo(15);
		System.out.println(t.getNo());
		t.setName("홍길동");
		System.out.println(t.getName());
		t.print();
	}
}

  기본형 타입 int, double과 참조형 타입 String, 배열, 클래스를 활용하는 코드.


오늘의 핵심 키워드
  1. Stack 영역은 변수에 새로운 데이터가 할당되면 이전 데이터는 삭제된다. 
  2. Heap 영역의 실제 데이터를 갖고 있는 참조값(주소값)을 Stack 영역의 객체변수가 저장한다.
  3. Static 영역은 객체 생성 필요없이 사용이 가능하다. 

※ 참조값(주소값)을 출력할 때는 hashCode() 메소드를 사용한다.


 <기본형 타입 : int, double>

(Stack : 주황, Heap : 보라)

① int 타입 변수 a에 10 저장

② double 타입 변수 b에 2.67 저장

③ 각각 저장된 값 출력


<참조형 타입 : String, 배열>

(Stack : 주황, Heap : 보라)

① String 타입 변수 c에 "사과"가 저장된 객체의 참조값 저장

② int배열 타입 변수 d에 정수 10개까지 저장할 수 있는 객체의 참조값 저장

③ 각각 저장된 참조값 출력


 <참조형 타입 : 클래스>

(Stack : 주황, Heap : 보라)

① Test 타입 변수 t에 Test 객체의 참조값 저장

② setNo() 메소드로 필드 no에 15 저장

② getNo() 메소드로 필드 no에 저장된 값 출력

② setName() 메소드로 필드 name에 "홍길동" 저장

② getName() 메소드로 필드 name에 저장된 값 출력


최종출력본


꼭 봐야되는 마무리 꿀팁!
  • 기본형 변수는 값을 Stack영역에 저장한다! 
  • 참조형 변수는 참조값(주소값)을 Stack영역에 저장한다!
  • 참조값에 해당하는 객체는 Heap영역에 저장한다!

▲ 영상으로 한번 더 복습하세요 :)