변수 (int, double, boolean, String)
static (main이 실행되기 전에 메모리에 로드된다.) = 공간 분리 (class 별로 분리되어있음)
static은 정적이고, 한개만 메모리에 로드된다. (여러개 띄울 수 없음)
메서드(함수) - 4가지 유형(기본, 인수 1개, 인수 여러개, 리턴이 있는 함수) - void (리턴이 없는)
2. 자료구조
1. Heap
Student 변수명 = new Student();
new가 되면, static이 붙지 않은 모든(변수, 메서드)가 heap에 로드 된다.
package jvm;
// 이름, 나이 학생 번호
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 {
public static void main(String[] args) {
Student s1 = new Student(); // new가 되면, static이 붙지 않은 모든(변수, 메서드)가 heap에 로드 된다.
s1.no = 1;
s1.name = "홍길동";
s1.age = 20;
s1.show();
Student s2 = new Student();
s2.no = 2;
s2.name = "임꺽정";
s2.age = 30;
s2.show();
}
}2. Stack
First In Last Out = FILO
바디가 들어오면 들어온 순서대로 나가는 것이 아닌 제일 마지막에 들어온 게 먼저 나간다
들어오다 = PUSH / 나가다 = POP
데이터를 저장하는 공간 (지역변수)
package ex04;
// 오류는 위에서 터져서 밑으로 가기 때문에 항상 위에서 부터 체크
public class Stack02 {
static void m1() {
int a = 1;
m1(); // 재귀함수 : 자기가 자기를 호출 하는 것 (데몬)
}
public static void main(String[] args) {
m1();
}
}3. Queue
First In First Out = FIFO
첫번째로 들어온 게 첫번째로 나간다
코드를 실행하는 공간
package ex04;
public class Queue01 {
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 종료");
}
}

static fhem → main 실행 (stack, queue 생성) → m1 실행 (stack, queue 생성) → m2 실행 (stack, queue 생성) → 다 pop 된 m2 queue 삭제, stack 삭제 → 다 pop 된 m1 queue 삭제, stack 삭제 → 다 pop 된 main queue 삭제, stack 삭제 → 프로그램 종료
4. 참조 자료형
기본 자료형 : 값이 있다
참조 자료형 : 값이 있는 게 아닌 주소가 있음 → 그 주소로 가서 값을 찾음
모든 참조 자료형의 크기는 4Byte이다.
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);
}
}
Share article