- 매직 넘버 X
- int health = 100 (X)
- final 상수 사용할 것- 자바 배열은 0으로 자동 초기화
- 잘못된 지식)
클래스와 객체는 붕어빵틀과 붕어빵 관계(X)
- class Player 와 Player1,Player2 각 객체들
- Player1=Player2=Player 이지만
- 붕어빵 틀 != 붕어빵
- Java의 경우 함수에 전달되는 인자의 데이터 타입에 따라서 함수 호출 방식이 달라진다.
- 자바의 변수 타입
- Primitive Type(원시 자료형)
- int, double, float, Boolean, char 과 같은 일반형
- Call by Value로 동작
- Reference Type(참조 자료형)
- String, Array, Class ..
- Call by Reference로 동작
- Call by Value
- 함수 호출시 메모리 임시 공간 생성 및 종료시 삭제
- 함수 호출시 전달되는 변수 값을 복사하여 함수의 인자로 전달
- 복사된 함수는 지역변수 특성을 가짐.
- Call by Reference
- 함수 호출시 메모리 임시 공간 생성 및 종료시 삭제
- 함수 호출시 전달되는 변수가 가리키는 주소(레퍼런스)를 함수의 인자로 전달
- 함수 안에서 인자의 값이 변경되면, Argument로 전달된 객체의 값도 변경.
- Call by Value와 Call by Reference 차이점
- 함수 안에서 인자값이 변경됬을때 영향도
- 프로세스
- 실행중인 프로그램
- 자기만의 메모리 공간을 가짐.
- 메모리 영역 (간략화)
- 코드 : 기계어 또는 바이트코드
- 데이터 : (중요*)정적변수 (static)
- 스택 : 함수, 지역변수
- 힙 : 객체
- 자바는 무조건 메인 메소드에서 시작
- 스택은 함수가 끝나는 순간 메모리에서 사라짐,
- 자바에서 new라는 것은 힙 메모리를 쓰겠다는 것.
Player p = new Player[]; p: 지역변수이자 참조변수로 Player 객체를 가리키고 있음.
- Static 변수
- 클래스 인스턴스화를 안해도 사용 가능함.
- 쿨래스를 아무리 많이 만들어도 하나만 생성됨.
멤버변수 = 인스턴스 변수 + 클래스 변수
- 데이터 영역, 스택 영역을 많이쓰면 StackOverflow
- 가비지 컬렉션(gc)
- 힙 영역에서 동작
static 변수가 객체를 안만들어도 사용할 수 있고 클래스를 많이 생성해도 하나라는 것은 처음 알았다. 또 간략하지만 데이터 영역을 배웠는데 잘 몰랐던 개념이라 좀 더 시간내서 공부 해야할 거 같다.