본문 바로가기
Back-End/Spring Boot

예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해

by newny 2023. 4. 12.
반응형

기계어의 특징

  • 0과 1의 2진수 형태로 표현됨
  • 수행시간이 빠름
  • CPU마다 기계어가 다름

 

어셈블리어

  • 니모닉(Mnemonic)과 기계어의 일대일 매칭 코드표
  • CPU마다 기계어가 다르기때문에 어셈블리어도 기계어에 따라 다름
  • 어셈블리어를 기계어로 번역해 주는 소프트웨어를 ‘어셈블러’ 라고 함

 

C언어

  • 수학적 기호 사용
  • 기종이 몇개든 단 하나의 소스파일을 가짐
  • 컴파일러로 소스를 번역하여 목적파일 생성함

 

컴포넌트

재사용 가능한 독립된 모듈

 

const == final

→ 따라서 자바에서는 const 키워드를 사용하지 않음
 

함수와 메소드의 차이

함수와 메소드는 크게 다른점이 없지만 굳이 차이점을 찾는다면, 함수는 클래스나 객체와 아무 관계없이 존재할 수 있지만 메소드는 반드시 클래스 정의 안에 존재해야 한다는 것이다.
 

변수의 종류에 따른 저장 영역

  • 클래스 멤버 변수(static 멤버변수) → static 영역 (메소드영역)
  • 지역변수(중괄호에 의해 만들어진 영역 안의 변수) → 스택영역
  • 객체 멤버 변수(인스턴스 멤버변수) → 힙영역

 

call by value

메소드를 호출하면서 인자로 전달되는 것은 변수 자체가 아니라 변수가 저장한 값만을 복제해서 전달하는 방식

예시)

  • 메소드를 호출하면 스택영역에 해당 메소드의 스택 프레임이 생성됨 → 그 안에 해당 메소드의 지역변수가 생성됨
  • square() 메소드의 인자값으로 보낸 k의 값만 전달이 됨 → 값만 전달이 되기 때문에 square() 메소드 안에서 k변수의 값을 25로 지정하더라도 main() 메소드의 k변수의 값은 5로 그대로임
  • 서로의 스택 프레임(main(), square()) 에 접근할 수 없음
public class Start4 {
    public static void main(String[] args) {
    	int k=5;
        int m;
        
        m = square(k);
    }

    private static int square(int k) {
        int result;

        k=25;

        result = k;
        return result;
    }
}


 

멀티 프로세스

  • 다수의 데이터 저장 영역을 갖는것
  • 멀티 프로세스는 각 프로세스마다 각자의 T메모리가 있고, 각자 고유의 공간이므로 서로 참조 할 수 없음
  • 메모리리 사용량이 크다

 

멀티스레드

  • 스택영역을 스레드 개수만큼 분할해서 사용하는 것
  • 한개의 영역을 나눠서 사용하기 때문에 각자의 영역을 참조할 수 있음
  • 멀티 프로세스 대비 메모리를 적게 사용할 수 있다

 

반응형

댓글