본문 바로가기
Java/Java 활용 개념 정리

[Java] 메서드도 변수이다.

by Dev dreamer 2023. 1. 31.

 

💡 1. 메서드가 변수라고??


메서드도 변수다??

 

변수는 데이터 형태와 이름을 갖는다. 그리고 그 안에 데이터를 저장하고 있다.

 

 

메서드를 살펴보자 접근제한자가 앞에 붙고 바로 데이터 형태 이름을 갖는 변수와 동일한 형태를 가지고 있으며

 

변수와 마찬가지로 하나의 데이터 값을 만들어 낸다.

 

 

이러한 메서드를 사용할 곳에서 호출해서 사용한다.

 

sum 이라는 메서드는 a와 b 의 합을 구해서 결과값 단 1개를 return 해준다

 

 

 

메서드의 구조를 살펴보면

public , private, default, protected 같은 접근제어자가 맨 앞에 붙어주고

 

그 다음에 리턴타입이 붙고 메서드 이름을 정한다. 그리고 전달 받을 매개변수를 받는다.

 

위의 설명한 모든 부분을 method 의 정의부 라고 한다.

 

그 아래에는 위에서 받은 매개변수를 가지고 어떠한 동작을 통해 결과값을 return 해준다

 

이 부분을 method 의 구현부 라고한다.

 

정의부와 구현부를 합쳐서 method를 선언한다 라고 한다.

 

 

💡 2. 코드로 알아보기.


위에가 클래스의 메인부분이며 아래가 메서드이다.

 

어 ? 저 static 은 뭐죠? public 이랑 int 랑  sum 은 위에서 말한 접근제어자, 데이터 형태, 메서드 이름인건 알겠는데..?

 

저 static을 붙여서 선언하게 된 변수 or 메서드는

 

프로그램이 실행될 때 Java 메모리에 할당 되고, 이는 프로그램이 종료할 때 해체된다.

 

즉 다시 말해서 해당 클래스의 객체를 생성하지 않아도 stataic 자원에 접근이 가능하다는 것이다.

 

만약 위의 부분을 static 을 선언하지 않고 sum을 사용하려고 하면 어떻게 해야할까 ??

sum을 포함하고 있는 클래스의 객체를 생성해서 그 객체 변수T를 통해 sum에 접근해서 사용해야한다.

 

 

 

메서드는 단 하나의 결과 값을 반환하는데 저는 여러개 데이터를 받고 싶은데요 ??

 

return을 그냥 위에 처럼 3개 받으면 안되나요??

 

➡안된다. 메서드는 단 하나의 결과값만을 반환해야 한다.

 

그러면 어떻게 해야 할까요 ???

 

 

위에서 말했듯이 메서드는 접근제어자 반환타입 메서드이름 (매개변수) 등으로 선언된다.

 

하나의 결과 값을 반환이 가능한데 여러개의 정보를 해당 메서드에서 받고 싶다면???

 

반환 타입을 배열 등으로 하나의 객체에 담아서 전송해주면 된다!

 

 

반환 타입 자체를 int[] 배열로 선언해주고 반환하고자 하는 값을 그 배열에 담아서 전송해 주면 된다.

그려면 하나의 메서드에서 여러개의 값을 한번에 전송이 가능하다.

 

 

💡 3. 메서드의 매개변수 전달 기법(parameter passing)


 

1. Call By Value

 

값을 전달하는 기법을 알아보자. 메서드에 파라미터를 통해 데이터를 전달하는데

이때 전달하는 정보는 실제 저장한 값을 전송한다.

 

여기서 메서드를 호출한 쪽에 저장되어 있던 정보를 실인수.

 

매개변수로 보낸 정보(메서드에서 받은 정보)를 가인수 라고 한다.

 

실인수와 가인수는 실제 저장되어 있는 위치가 다르다. 기억공간을 공유하지 않는다.

 

 

 

2. Call By Reference ( 번지 전달 기법)

 

메서드를 호출한 쪽에서 저장되어있던 객체를 보내는 경우에 전달하는 매개변수인자는

 

실제 데이터 값이 아닌 해당 객체의 주소(번지)를 보내는 것이다.

 

따라서 메서드를 호출해준 쪽에서 보는 값과 메서드 내부에서 받은 번지수로 바라보는 값이 같은 곳을 바라본다.

 

즉 같은 데이터를 가지고 동작을 한다. 기억공간을 공유한다.

 

 

 

 

 

 

 

 

 

 

 

 

자바 기초를 더 단단하게 하기 위해 선택한 강의입니다.

출처: Java TPC (생각하고, 표현하고, 코딩하고) 대시보드 - 인프런 | 강의 (inflearn.com)

댓글