![10 [메모리] 클래스 (개념, JVM[ static, stack, queue ] )](https://image.inblog.dev?url=https%3A%2F%2Fblogthumb.pstatic.net%2FMjAyMjA4MDNfMTM0%2FMDAxNjU5NTI4ODE4MjQ0.i6JKkuAVFdKxCXQ1k1fZuDJ3j5PhNx6kNT2EbV1rknIg.555CMCtO_hQEd0xuiq5cnKZ8gobVGTd90sfMbUlwULQg.PNG.tjddns897%2Fimage.png%3Ftype%3Dw2&w=1920&q=75)
10 [메모리] 클래스 (개념, JVM[ static, stack, queue ] )
클래스 의 사용 클래스의 모양 (아래 코드와 함께 보이자) - People 이 클래스의 생긴 꼬라지를 함 보이자...
10 [메모리] 클래스 (개념, JVM[ static, stack, queue ] )
클래스 의 사용 클래스의 모양 (아래 코드와 함께 보이자) - People 이 클래스의 생긴 꼬라지를 함 보이자...
package jvm;
//static이 없으면 메모리에 안 올라와있음 그냥 HDD에 글자만 기록된 것.
class Student {
int no;
String name;
int age;
void show() {
System.out.println(no);
System.out.println(name);
System.out.println(age);
System.out.println();
}
}
public class Heap01 {
// static int no;
public static void main(String[] args) {
//우변 = heap에 올라오는 것
//좌변 = 우변을 찾기 위해 지칭
Student s1 = new Student();
// new가 되면, static이 붙지 않은 모든(변수, 메서드)가 heap에 로드된다.
//staic과 마찬가지로 class 기준으로 묶여서 뜬다.
s1.no = 1;
s1.name = "홍길동";
s1.age = 20;
/*
Student s1 = new Student(); // new가 되면, static이 붙지 않은 모든(변수, 메서드)가 heap에 로드된다. staic과 마찬가지로 class 기준으로 묶여서 뜬다.
s1.no = 1;
s1.name = "홍길동";
s1.age = 20;
Student.show(); // static void show일 경우 원래 이 코드는 실행되어야 하지만 프로그램이 그냥 막은 것.
*/
s1.show();
// s1과 s2는 heap 내부의 서로 다른 공간에 위치함.
Student s2 = new Student();
s2.no = 2;
s2.name = "김이름";
s2.age = 26;
s2.show();
}
}
package jvm;
public class Stack01 {
static void m1() {
int a = 1; // 함수가 호출되어야 함수의 바디가 실행되기 때문에 a는 main 실행 전 올라와있지x
m2();
}
static void m2() {
int b = 1; //m2에는 코드가 뜨는 것이 아니라 b가 뜬 것임 (코드는 queue에 뜸
}
public static void main(String[] args) {
//stack은 뭘 저장하고 있는지를 보면 됨
Student s = new Student(); //s의 크기를 당장은 모른다. heap이 아니라 main stack에
System.out.println("15번라인");
m1();
System.out.println("17번라인");
}
}
package jvm;
public class Stack02 {
static void m1() {
int a = 1;
m1(); // 재귀함수
}
public static void main(String[] args) {
m1();
}
}
// 오류는 위에서 터져서 밑으로 영향을 줌
package jvm;
public class Queue01 {
//queue01이라는 클래스의 static 공간에 m1,m2
static void m1() {
int n1 = 1;
System.out.println("🚒");
System.out.println("🏍️");
System.out.println("️🚲");
m2();
System.out.println("🚅");
System.out.println("✈️");
}
static void m2() {
int n2 = 2;
System.out.println("🍕");
System.out.println("🍔");
System.out.println("🌭");
System.out.println("🥚");
System.out.println("🧀");
}
public static void main(String[] args) {
System.out.println("main 시작");
m1();
System.out.println("main 종료");
}
}
package jvm;
class Data {
int num;
}
public class Ref01 {
public static void main(String[] args) {
Data d1 = new Data();
Data d2 = d1;
d1.num = 10;
d2.num = 20;
System.out.println("d1.num = " + d1.num);
System.out.println("d2.num = " + d2.num);
}
}
jay0628