Java/모두의 자바

Chapter 05-28 메서드 사용하기

계란💕 2022. 2. 5. 15:57

05-28.1 메서드 사용하기 

 

  - 지난 단원에서 MyClass 클래스 안에  정의한 5개의 메서드를 이용하자.

  Ex)

<hide/>

package javaStudy;
public class MyClassExam{
	public static void main(String[] args) {
		MyClass myclass = new MyClass();
		myclass.method1();
		myclass.method2(10);
		int value = myclass.method3();
		System.out.println("m3가 리턴한 값 "+ value);
		myclass.method4(5, 10);
		int value2 = myclass.method5(55);
		System.out.println("m5가 리턴한 값 "+ value2);
		
	}
}

  Note) 출력 결과

  - MyClass가 가진 메서드를 사용한다.

  - 클래스가 가진 메서드를 사용하려면 먼저 객체로 만들어야 한다.

  - MyClass myclass = new MyClass();

    -> MyClass가 가진 메서드를 사용하려면 반드시 MyClass가 객체로 만들어져야 한다. 

    -> MyClass : 클래스명

    -> myclass : 변수명 

  - my clsas옆에 마침표를 찍으면 MyClass가 가진 메서드나 필드에 접근할 수 있다.

  - method3의 실행결과로 "m3 실행"이 나왔으나 10을 반환했는지는 알 수 없다.

  - 따라서, method3처럼 반환하는 메서드를 수행할 때는 반환값을 받아낼 변수(value)가 필요하다.

  - method4는 반환값이 없으나 메서드를 사용하기위해 정숫값 두 개를 꼭 넣어야 한다. (5, 10)

  - method5도 method3과 마찬가지로 변수 value2가 필요하다. 

  - 자바는 내가 만든 객체 뿐만 아니라 이미 만들어진 객체도 굉장히 많다. 

  - 객체가 제공하고 메서드 사용법도 중요하다.

 

 

05-28.2 메서드 사용하기 실습

  Ex 1) 참조형과 참조형이 아닌 경우의 큰 차이는 메서드 호출에 대한 점이다.

  다음 코드는 기본형 변수 arr과 addOne이라는 메서드에 전달합니다. 

  코드를 실행하여 참조형과 기본형이 어떻게 다른지 확인하라.

  Ex)

<hide/>

package javaStudy;
public class ReferenceTypeExam {
	public static void main(String[] args) {
		
		ReferenceTypeExam exam = new ReferenceTypeExam();
		
		int value = 10;
		exam.addOne(value);
		System.out.println("기본형 변수의 값을 다른 메서드에서 변경한 결과: "+ value );
		
		int [] arr = {10} ;
		exam.addOne(arr);
		System.out.println("참조형 변수의 값을 다른 메서드에서 변경한 결과: "+ arr[0] );
	}
	
	public void addOne(int value) {
		++value;
	}
	public void addOne(int [] arr) {
		for( int i = 0; i < arr.length ; ++i) {
			++arr[i];
		}
	}
}

  Note) 출력결과

  - 기본형 변수

    -> 기본형 변수가 메서드에 전달될 때는 값의 복사본을 전달한다. 전달된 값은 메서드에 선언된 매개 변수에 저장,

    -> 원본 변수에도 값이 들어있고 메서드에 선언된 변수에도 값이 들어있다. 

    -> 메서드를 실행하면서 해당 값이 바뀌더라고 원본 변수의 값은 바뀌지 않는다.

    -> 그러므로 10을 출력.

 

  - 참조형 변수

    -> 변수에 값이 아닌 "주소"가 들어있다. 

    -> 따라서 메서드에 전달될 때, 주소의 복사본을 전달하고 메서드에 선언된 매개변수에도 주소값이 들어있다. 

    -> 원본 변수와 메서드에 선언된 변수에도 값이 저장된 메모리의 주소가 들어있다

    -> 따라서, 두 변수는 같은 곳을 가리킨다. 

    -> 그러므로 메서드 실행하면서 해당 값이 바뀌면 원본 변수가 가리키는 곳의 값이 바뀌었으므로

    -> 같이 바뀌게 된다.

    -> 참조형 출력결과 : 11

 

 

05-28.3 메서드 사용하기 실습

  Ex 2) CarExam의 main에서 Car클래스의 인스턴스를 만들고 run메서드를 호출하라.

  Car클래스는 다음과 같이 정의한다.

<hide/>

package javaStudy;
public class Car{
	
	public void run() {
		System.out.println("차가 달립니다.");
	}
}
<hide/>

package javaStudy;
public class CarExam {
	public static void main(String[] args) {
		
		Car car  = new Car();
		car.run();	
	}
}

  Note) 출력 결과: 차가 달립니다.

  -  클래스를 사용하기위해 반드시 인스턴스화해야 한다.

  - 인스턴스 생성하기 위해 "new"키워드를 이용한다. 

  - 따라서 run이라는 메서드를 사용할 때는 " 변수명. 메서드명() "형태로 사용한다.