본문 바로가기
부트캠프/코드스테이츠 백엔드부트캠프 43기

코드스테이츠 백엔드 부트캠프 43기 (9일차-객체지향 회고)

by 고구마는호박고구마 2022. 12. 27.
객체지향

 

프로그램을 객체로 나누어 결합도는 낮추고 응집도는 높이기 위한 프로그래밍.

자바는 클래스를 통하여 객체를 생성한다.

 


 

먼저 자바의 작동원리 (운영체제의 종류에 상관없이 JVM을 통해 실행)
.java 파일은 컴파일을 통해 .class 파일로 바뀌어 JVM에 입력된다.
JVM 내부에서 Class Loader를 통하여 Runtime Data Area에 로딩된다.

Runtime Data Area 내부에는 대표적으로 (스택, 힙)이 있다.

 1. 일반 변수를 선언시 변수와 변수의 값은 스택에 저장이 된다. 

  //코드에서 int age = 29; 을 선언했을 때

 2. new를 통해 참조변수를 생성하면 주소값은 스택에 저장이 되고 주소값의 내용은 힙에 저장이 된다.

  //코드에서 String name = new String("MinSoo"); + (Car bmw = new Car();도 밑에 방식처엄 Heap에 저장)

+ String 사용시 주의 사항 <문자열 변경이 잦은 경우>

 Ex) name += "Kim"  -> "MinSooKim"

 

이런식으로 Heap 영역에 새로운 값이 할당이 된다. 이 예시는 문자열을 한 번 바꾸는 거지만 여러번 바꾸게 될 경우 힙 영역에 많은 문자열이 쌓이게 되면 속도 저하의 원인이 될 수 있고 성능이 좋지 않다. (물론 가비지 컬렉션이 지워주기는 함)

그래서 문자열을 여러번 바꾸게 되는 상황에서는 String 보다는 StringBuilder나 StringBuffer를 사용한다. 

 


Static

메모리에 한번 할당 됨(Static영역에 할당) => 여러 객체가 해당 메모리를 공유하게 됨=> 메모리 공간 효율 높아짐 


인스턴스 메서드 : 인스턴스 변수, 인스턴스 메서드, 클래스 변수, 클래스 메서드 모두 사용 가능 
스태틱 메서드 : 인스턴스 변수와 인스턴스 메서드 사용 불가능 (모든 객체가 공유)  

가장 큰 차이 => 스태틱 메서드는 객체를 생성하지 않고도 사용가능

 

댓글