목차 :
1. class 와 객체?
2. Primitive Type vs. Reference Type
- 메모리 저장
3. If vs. Switch 동작 방법
4. ArrayList vs. Linked List
5. @Overloading vs. @Overriding
6. call-by-value& call-by-reference
7. package, import, classPath
8. Static
9. Stale Data
✔️ Class 와 객체 (Object)
> Class
: 상태(state) + behavior(행위); 블루프린트
- 상태 -> 변수로 지정
- 행위 -> 메소드로 지정
> 객체 (Object)
: 소프트웨어 세계를 구현할 대상 ; 클래스 선언대로 생성된 실체
- class 의 instance
- 객체는 모든 인스턴스 대표하는 포괄적 의미
- new 를 통해 객체 생성
- 클래스만으로 일을 할수 없고, 객체를 생성해야만 우리가 일을 시킬수 있다.
> Instance
: 소프트웨어 세계에 구현된 구체적인 실체 = **실체화**
- 실체화된 인스턴스는 메모리에 할당
예시 )
붕어빵 만들때 틀붕어빵 객체의 틀 = class (껍대기)
만들어진 붕어빵들 = 객체
=> 클래스로 인스턴스를 만든다.
클래스 - 설계도
인스턴스 = 객체 - 제품
✔️ Primitive Type & Reference Type
> 차이점:
1. 초기화 하는 방식
: 초기화 - 변수를 사용할 수 있는 상태로 만들어 주는 것
- 기본형 : 값을 바로 넣어준다
- 참조형 : new 를 사용해서 초기화
2. 메모리 저장 형태
- 기본형 : 저장 공간에 값 자체를 저장함.
- 참조형 : 참조 값 (주소)를 가지는 자료형
🌟 Java 의 Stack 과 Heap
> Stack
- Heap 영역에 생성된 Object 타입의 데이터 참조값 할당
- primitive type 의 데이터가 값과 함께 할당 > 실제 값 직접 저장
- 지역변수들은 scope에 따른 visibility 가짐
- 다른 함수에서 접근 X
- 각 스레드는 자신만의 stack 보유
- 스레드가 새로 생성될때 stack 함께 생성되며 다른 스레드의 stack은 접근 불가능
예시 )
public class Main {
public static void main(String[] args) {
int argument = 4;
argument = someOperation(argument);
}
private static int someOperation(int param){
int tmp = param * 3;
int result = tmp / 2;
return result;
}
}
| Stack | main() | someOperation() | main() |
| 4 | result = 6 | ||
| 3 | tmp = 12 | ||
| 2 | param = 4 | ||
| 1 | argument = 4 | arguement = 4 | argument = 6 |
> Heap
- 주로 생명주기가 긴 데이터들 저장 (object 크기 크고 다른 코드 블럭에서 공유 가능한 경우)
- 메모리 중 stack 데이터 제외한 모든 데이터
- Reference Type (Integer, String, ArrayList) heap 영역에 생성
- 몇개의 스레드가 존재하던 하나의 heap 영역만 존재
- Heap 영역에 있는 object를 가르키는 reference variable이 stack 에 올라간다.
예시)
public class Main {
public static void main(String[] args) {
List<String> listArgument = new ArrayList<>();
listArgument.add("yaboong");
listArgument.add("github");
print(listArgument);
}
}

'🌈 Java > Back to Basic 101' 카테고리의 다른 글
| 자바 기초 정리: @Overloading vs. @Overriding (0) | 2021.03.03 |
|---|---|
| 자바 기초 정리: ArrayList vs. LinkedList (0) | 2021.03.03 |
| 자바 기초 정리: IF vs. Switch (0) | 2021.03.03 |
| 2주차 : 자바 데이터 타입, 변수 그리고 배열 (0) | 2021.02.28 |
| 1주차 : JVM 과 자바 실행 (0) | 2021.02.25 |