[Java, Spring] Week4 - Chapter 1~2

pos++·2023년 9월 16일

Spring

목록 보기
4/9
post-thumbnail

절차지향 프로그래밍:

C언어
유지보수가 어렵고 프로그램의 순서가 바뀌면 동일한 결과를 보장할 수 없음

객체지향 프로그래밍:

C++, Java
기능별로 코드를 묶어 중복을 제거
메소드를 통해서만 접근이 가능
캡슐화, 상속, 다형성


JVM의 가비지컬렉션(GC)

Java는 메모리를 할당하는 기능은 있지만 메모리를 반환하는 기능은 없음

JVM의 GC 기능이 프로그램 내 사용되지 않는 메모리, 가비지를 자동으로 회수한다.



static 영역

  • 클래스들의 놀이터
  • java.lang 패키지 존재
  • 개발자가 작성한 모든 클래스, 임포트 매키지 존재
  • 클래스 멤버 변수 존재 - 한번 자리잡으면 JVM이 종료될때까지

stack 영역

  • 메소드들의 놀이터
  • 메소드의 stack frame 존재
  • stack frame 안에 지역변수 존재

heap 영역

  • 객체들의 놀이터
  • 객체 (멤버 변수) 존재 - 이후에 객체와 함께 GC에게 회수됨
  • 배열 존재

❗️내부 stack frame에서 외부 stack frame의 변수에 접근하는 것은 가능
BUT 외부 stack frame에서 내부 stack frame의 변수에 접근하는 것은 불가능


여는 중괄호 { 를 만나면 메소드를 위한 stack frame이 stack 영역에 할당되고,
닫는 중괄호 } 를 만나 메소드가 종료되면 stack frame이 소멸된다.



[+]

  1. 절차지향 프로그래밍은 객체지향 프로그래밍의 반대 개념이다 - X

  2. 절차지향과 객체지향을 구분하는 방법으론 상속, 다형성의 유무가 있다. - O

  3. 다음 상황에 대해 답하시오.

    Integer a = 500;

    Integer b = 500;

    (1) a와 b는 모두 스택 메모리 영역에 저장공간을 확보한다.

    (2) a.equals(b) 는 참이다 - O. 값 비교 결과 서로 같다.

    (3) a == b 는 참이다 - X. 주소 비교 결과 서로 다르다.

  4. 객체지향 프로그램의 단점은 무엇인가?

    설계에 많은 시간이 걸리고, 처리속도가 느리다.



도서: 스프링 입문을 위한 자바 객체지향의 원리와 이해 (김종민, 위키북스)

profile
밀린 TIL 업로드 조금씩 정리중...

0개의 댓글