오늘 공부한 내용 ✍🏻
- 프로그래머스 level1 2문제
https://github.com/sohee0724/programmers- 스프링 입문을 위한 자바 객체 지향의 원리와 이해 2
abs(-99) = 99
data = enumerate((1, 2, 3))
for i, value in data:
print(i, ":", value)
# 출력
0 : 1
1 : 2
2 : 3
# 구분자.join(문자열 리스트)
"".join([avg>=90 and "A" or avg>=80 and "B" or avg>=70 and "C"
or avg>=60 and "D" or avg>=50 and "D" or "F" for avg in avgs])
print(list(zip([1, 2, 3], [4, 5, 6])))
# 출력
[(1, 4), (2, 5), (3, 6)]
# 2차원 배열 행렬 바꾸기
list(map(list, zip(*scores)))
public class Start {
public void static main(String[] args){
System.out.println("Hello OOP !!");
}
}
JRE은 프로그램이 시작되는 시작점 main()메서드가 있는지 확인한다. main()메서드를 발견하면 JRE는 프로그램 실행을 위해 JVM을 부팅한다. 부팅된 JVM은 목적 파일을 받아 실행된다. JVM이 먼저 하는 일은 전처리 과정이다. 모든 자바 프로그램이 반드시 포함하는 java.lang 패키지를 static 영역에 가져다 놓는다. 그 다음 JVM은 개발자가 작성한 모든 import 패키지와 클래스들을 static 영역에 가져다 놓는다.
main() 메서드가 실행되기 위해서 stack frame이 스택 영역에 할당된다. (클래스를 정의하는 중괄호 빼고 다른 여는 중괄호를 만날 때마다 스택 프레임이 하나씩 생긴다, 여는 중괄호를 만났을 때 해당 메서드의 스택 프레임이 생기고 닫는 중괄호와 만났을 때 스택 프레임이 소멸된다. ) 그리고 메서드의 인자(args)를 저장할 수있는 변수 공간을 스택 프레임 맨 밑에 확보해야 한다. 이렇게 메모리를 구성하고 나서야 main() 메서드 안의 첫 명령문을 실행하게 된다
요약 ⇒ JRE은 JVM 자바 가상 기계를 부팅하고, JVM은 메모리 구조를 만들고 거기에 java.lang. 패키지와 각종 클래스 로딩, main() 메서드 스택 프레임 배치, 변수 공간 배치 등등의 일을 한다. main() 메서드가 끝나면 JRE는 JVM을 종료하고 JRE 자체도 운영체제 상의 메모리에서 사라진다. 그러면 T 메모리도 사라진다.
변수는 Static, Stack, Heap 영역 모두에 있는데 각각에 있는 변수는 각기 다른 목적을 가진다
public void ckass Start4{
public static void main(String[] args){
int k = 5;
int m = squre(k);
}
private static int square(int k){
int result;
k = 25;
result = k;
return result;
}
}