method
- 반복문, 조건문, 변수, 상수 method function 함수
- public static void main(String[] args) { // 실행되기를 기대하는 코드, main이라는 메소드 }
- method 정의와 호출 (define, call)
// 변수 result의 값을 화면에 출력한다. System.out.println(result);public static void main(String[] args) { // 메소드 numbering이 리턴한 값이 변수result에 담긴다. String result = numbering(1, 5);
members라는 변수를 정의했고 String이라는 문자열에 담을 수 있는 배열.public static String[] getMembers() { String[] members = {"최진혁", "최유빈", "한아람" }; return members; } // getMembers라는 메소드의 return 값은 String 문자열의 [] 배열 값이다. - main 메서드는 규칙이다 변수
- class 클래스 = 설계도 method의 정의
- instance 인스턴스 = 구체적인 제품 method의 호출
- object 객체
자주 refactoring하는 코드가 건강하다.public void setOprands(int left, int right) {
this.left = left;
this.right = right;
}
// this.left는 int의 left; right;를 가르키고, left; right는 int left, int right를 가르킨다. - class Calculator{ int left; right;
instance 변수는 instance 마다 다른 값을 가지게 되는 변수인데,
class 변수는 class의 변수이기 때문에 그 class에 따라 만들어진 모든 instance들은 그 class의 변수들이 가진 값들을 자연스럽게 가지고 있게 된다.
static double PI = 3.14 -> static 변수는 클래스에 소속이 된다. 이 변수는 모든 메소드, 인스턴스에서 동일한 값으로 가져오게 된다.
따라서 클래스 변수의 용도는
1. 인스턴스에 따라서 변하지 않는 값이 필요한 경우
2. 인스턴스를 생성할 필요가 없는 값을 클래스에 저장하고 싶은 경우
3. 값의 변경 사항을 모든 인스턴스가 공유해야 하는 경우
(ex. Calculator2.base = 10; 이면 Calcualtor2의 인스턴스들은 모두 10을 베이스로 깔고 간다.)
클래스 메소드
인스턴스 메소드는 클래스 멤버에 접근 할 수 있다. 클래스가 이미 존재하고 있기 때문에
클래스 메소드는 인스턴스 멤버에 접근 할 수 없다.
인스턴스 변수는 인스턴스가 만들어지면서 생성되는데, 클래스 메소드는 인스턴스가 생성되기 전에 만들어지기 때문에 클래스 메소드가 인스턴스 멤버에 접근하는 것은 존재하지 않는 인스턴스 변수에 접근하는 것과 같다.
-> 인스턴스 변수 Non-Static Field
-> 클래스 변수 Static Field
Overloading
클래스에 메소드 정의할때 같은 이름이지만 서로 다른 매개변수의 형식을 가지고 있는 메소드 여러 개를 정의할 수 있는 방법
-> public void setOprands(int left, int right)
-> public void setOprands(int left, int right, int third)
c1.setOprands(10, 20);
c1.setOprands(10, 20, 30);
각자 알아서 적용된다.
클래스 & 객체 힙메모리는 뭘까?
클래스명 참조변수명; // 인스턴스를 참조하기 위한 참조변수 선언
참조변수명 = new 생성자(); // 인스턴스 생성 후, 객체의 주소를 참조 변수에 저장
-> 클래스명 참조_변수명 = new 생성자();
그러니까 new 키워드를 사용하면 생성된 객체가 힙메모리에 넣으라는 의미

<출처 : 세진개발 채널 [Java] 4분만에 자바 메모리 관리 마스터 하기 - Stack과 Heap 영역의 이해>

<출처 : 양주종의 코딩스쿨 채널 C언어 메모리구조와 동적할당 이해 - 힙영역, 스택영역 - 질문에 대한 답변>

<출처 : 이정록 채널 자바 메모리 구조 뿌시기 [ JVM이란? ]>
person 객체를 참조하는 p는 stack 영역에 저장
동적으로 생성한 person 객체 자체는 heap 영역에 저장

이러한 reference type은 heap 영역에 저장되는 것이다
그 메모리의 주소를 참조하는 변수를 stack 영역에 저장하는 것이다~
'java' 카테고리의 다른 글
| Java Arrays.sort(), Collection.sort() 정렬 알고리즘 (1) | 2024.10.19 |
|---|---|
| Java 시간 유형에 대한 고민 (1) | 2024.04.19 |
| HashMap 의 동작 원리 (1) | 2024.02.27 |
| 생성자 내부클래스 (1) | 2022.09.23 |
| Linked List vs Array List (0) | 2022.09.23 |