상세 컨텐츠

본문 제목

자바 프로그램

백엔드 공부진행도/Java

by myeongjaechoi 2024. 12. 25. 16:31

본문

  현실 세계 가상 세계
JDK(Java Development Kit) - 자바 개발 도구 소프트웨어 개발 도구 JVM용 소프트웨어 개발 도구
JRE(Java Runtime Enviroment) - 자바 실행 환경 운영체제 JVM용 OS
JVM(java Virtual Machine) - 자바 가상 기계 하드웨어 가상의 컴퓨터

JDK를 이용하여 프로그램 개발 -> JRE에 의해 JVM 상에서 동작

 

객체 지향 프로그램의 메모리 사용 방식

코드 실행 영역 스태틱(Static)영역 - 클래스
스택(Stack)영역 - 메서드 힙(Heap)영역 - 객체

데이터 저장 영역을 세 개의 영역으로 분할 - 스태틱, 스택, 힙

const 사용 X -> final 대체

JRE는 JVM 부팅 -> JVM은 메모리 구조 만들기

main() 메서드

public class Start {
public static void main(String[] arg){
System.out.println("Hello 명재");
}
}

이때, "Hello 명재" 구문은 메모리 변화가 없다. Why? -> 코드 실행 공간이 별도로 존재하기 때문이다.

main() 메소드의 끝을 나타내는 닫는 중괄호와 만나면 스택 프레임이 소멸된다. -> JRE는 JVM 종료, JRE 운영체제 메모리 사라짐

public class Start {
public static void main(String[] arg){
int a;
a =10;
double b = 10.0;
System.out.println("a :" + a + " b:" + b);
}
}

그러면 이때 메모리 영역은 어떻게 될까?

main 스택 프레임에

변수 a,b의 메모리가 추가된다.

public class Start {
public static void main(String[] arg){
int a;
a =10;
int b = 10;
if(a==10){
int m = b+5;
b = m;
}
else{
int p = b +10;
b=p;
}
b=m+p;
}
}

이러면 main스택 프레임 안에 if 스택 프레임이 추가로 생긴다.

public class Start {
public static void main(String[] arg){
int k =5;
int m;
m = plus(k);
System.out.println(m);
}
private static int plus(int k){
int result;
k= 10;
result = k;
return result;
}
}

이러면 스태틱 영역에서 Start안에 main(args: String[])만 존재하던 것에서 추가로 Plus(k: int)가 추가된다.

필드 == 속성, 함수 == 메서드

-> 부르는 방식 차이!!(절차적/구조적 프로그래밍 vs 객체 지 프로그래밍)

'백엔드 공부진행도 > Java' 카테고리의 다른 글

객체 지향  (1) 2024.12.26
순차 지향 절차지향 객체지향  (0) 2024.12.21
SOLID 원칙  (0) 2024.12.19
동일성과 동등성  (1) 2024.12.19

관련글 더보기