All About IT
[Java 기초] 자바의 메모리 영역(Stack, Heap)과 변수(기본형, 참조형)의 관계
안녕하세요~
이번 시간에는 자바의 메모리영역과 변수의 관계에 대해 알아보려고 하는데요.
어떤 원리를 통해 활용되는지 살펴볼까요?
기본형, 참조형 변수의 활용
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, 배열, 클래스를 활용하는 코드.
오늘의 핵심 키워드
- Stack 영역은 변수에 새로운 데이터가 할당되면 이전 데이터는 삭제된다.
- Heap 영역의 실제 데이터를 갖고 있는 참조값(주소값)을 Stack 영역의 객체변수가 저장한다.
- 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영역에 저장한다!
▲ 영상으로 한번 더 복습하세요 :)