Java 메서드

김정훈·2024년 4월 16일

Java

목록 보기
8/48

메서드

1. 함수란?

- 기능

2. 함수 정의하기

반환값 자료형 함수명 (매개변수 ....  ) {
	// 실행될 코드 정의 
	return 반환값;
}

1) 함수이름
2) 매개변수
3) return 예약어와 반환형

static int add(int n1, int n2){
	int result = n1 + n2;
	return result;
}

3. 함수 호출하고 값 반환하기

호출 -> 함수명(값, ...); 

4. 함수 호출과 스택 메모리

1) 스택(stack) - LIFO

  • 함수가 호출되어 연산을 수행할때만 공간을 할당
  • 작업 완료(return) → 제거
  • 가장 마지막에 투입된 자료 : 가장 먼저 나온다.
  • 가장 처음에 투입된 자료 : 가장 나중에 나온다.

함수와 스택의 관계

1) 함수가 호출되면 스택에 공간을 할당받고 값이 저장된다.
2) return하여 함수가 종료되면 자원이 해지된다.
3) 메인함수가 가장 처음에 할당되어있다.(항상대기중)
4) 함수에 정의된 변수 -> 스택에서 활성화, 스택에서 제거
5) 함수 지역 -> 지역 변수


2) 큐(queue) - FIFO, LILO

3) 힙(heap)

  • 힙(heap)은 동적 메모리(dynamic memory) 공간.
  • 객체가 생성될 때 사용하는 공간
  • 동적으로 할당되며 사용이 끝나면 메모리를 해제해 주어야 합니다. 자바에서는 가비지 콜렉터(garbage collector)가 자동으로 메모리를 해제해줍니다.

new Student()를 선언하면 Student하나가 생성되는데 각 Student는 StudentID, StudentName등의 멤버변수를 가지고 있다.
그런데 이들 변수를 저장할 공간이 있어야 합니다. 이때 사용하는 메모리가 힙 메모리(heap memory)입니다.
클래스 생성자를 하나 호출하면 인스턴스가 힙 메모리에 생성되는 것입니다.
Student student1 = new Student();

student1 변수는 지역변수 입니다. 지역변수는 스택 메모리에 생성됩니다. 인스턴스는 힙 메모리에 생성됩니다.

지역변수 student1에 생성된 인스턴스를 대입하는 것은 student1에 인스턴스가 생성된 힙 메모리의 주소를 대입한다는 것과 같은 의미입니다.


두개의 인스턴스
다음과 같이 두 개의 인스턴스를 생성

Student student1 = new Student();
Student student2 = new Student();

student1.studentName과 student2.studentName은 서로 다른 값
클래스가 생성될 때마다 인스턴스는 다른 메모리 공간을 차지(멤버변수를 저장하는 공간이 매번 따로 생김) → 클래스에 선언한 멤버변수를 다른말로 인스턴스 변수

3) 데이터영역

코드와 상수 문자열 등이 적재됨.
1) 데이터영역에 코드 상수 문자열등이 적재된다.
2) main()함수 실행중에 S1이라는 지역변수가 생성되고 스택에 저장
3) 힙영역에는 지역변수(s1)의 인스턴스들이 저장된다.
4) 생성자함수는 지역변수(s1)에 인스턴스의 주소값을 return해준다.

4) 가비지 콜렉터(garbage collector)

5. 함수의 장점

6. 클래스 기능을 구현하는 메서드

힙 영역 메모리 : 객체 전용 메모리

참조 자료형
클래스 형태의 자료형 -> 객체가 되어야 사용 가능

참조 변수 : 생성된 객체의 주소값을 가지고 있는 변수

profile
안녕하세요!

0개의 댓글