매개변수는 메서드나 생성자에 데이터를 전달할 때 사용한다. 자바의 매개변수는 크게 두 가지로 나눌 수 있다.
기본형(primitive type) 매개변수와 참조형(reference type) 매개변수입니다. 이 두 가지 매개변수 타입은 메서드에 전달되는 방식과 처리 방식이 다르다.
기본형(Primitive Type) 매개변수
기본형 매개변수는 값 자체를 전달한다. 자바의 기본형 데이터 타입에는 int, float, double, char, boolean, byte, short, long 등이 있다. 기본형 매개변수는 메서드 호출 시 복사되어 전달된다. 따라서 메서드 내에서 매개변수의 값을 변경해도 원래 값에는 영향을 미치지 않는다.
public class Main {
public static void main(String[] args) {
int number = 10;
modifyPrimitive(number);
System.out.println("After modifyPrimitive: " + number); // 출력: 10
}
public static void modifyPrimitive(int num) {
num = 20;
}
}
modifyPrimitive 메서드: num 매개변수를 20으로 변경하지만
main 메서드의 number 변수 값에는 영향을 미치지 않는다. 이는 num이 number의 복사본이기 때문이다.
아주 간단히 말하자면 우리가 친구에게 공을 던져주면, 친구는 그 공을 가지고 놀았지만, 우리가 가지고 있는 공은 그대로 있다.
참조형(Reference Type) 매개변수
참조형 매개변수는 객체의 주소(참조)를 전달한다. 자바의 참조형 데이터 타입에는 배열, 클래스, 인터페이스 등이 있다. 참조형 매개변수는 메서드 호출 시 객체의 주소가 전달되므로, 메서드 내에서 객체의 속성을 변경하면 원래 객체에도 영향을 미친다.
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
modifyReference(numbers);
System.out.println("After modifyReference: " + numbers[0]); // 출력: 10
}
public static void modifyReference(int[] nums) {
nums[0] = 10;
}
}
modifyReference 메서드는 nums 배열의 첫 번째 요소를 10으로 변경한다. 이는 main 메서드의 numbers 배열에 영향을 미친다. 이는 nums가 numbers 배열을 참조하기 때문이다.
간단히 설명하자면 우리가 친구에게 장난감을 빌려주면, 친구가 장난감을 바꿔놓으면 우리가 나중에 봤을 때도 그 장난감이 바뀌어 있는 것과 같다.
'Java 문법정리 (Array부터)' 카테고리의 다른 글
Interface (0) | 2024.07.31 |
---|---|
Calendar(java 8이후는 java.time) (0) | 2024.07.26 |
return 문 (1) | 2024.07.23 |
클래스 설계 단계 (3) | 2024.07.23 |
객체란? (1) | 2024.07.23 |