메서드
클래스 내부에 정의된 함수를 메서드라고 부름
특정 기능을 수행하는 코드블록을 정의하고, 필요할 때 호출하여 재사용 가능
중복 코드 감소와 가독성, 유지보수성 향상
[기본구조]
[접근제한자][static] 반환형 메서드이름(매개변수) {
함수에서 실행할 코드
[return]; 반환형이 void라면 return을 생략하거나 return으로 메서드 종료
}
package com.kh.method;
public class MethodBasic {
//main메서드 : 프로그램의 시작을 의미하는 메서드
public static void main(String[] args) {
int result = adder(10,5);
System.out.println("10 + 5 = " + result);
System.out.println("3.5 * 3.5 = " + square(3.5));
}
//숫자 두개를 받아서 더한값을 리턴
public static int adder(int num1, int num2) {
int result = num1 + num2;
return result;
}
public static double square(double num) {
return (num * num);
}
}
지역변수
블록{} 내부에서 선언된 변수
해당 블록을 벗어나면 메모리에서 제거됨
선언시 초기화 후 사용해야 됨.
매개변수
메서드 호출시 외부에서 전달받는 값을 저장하는 지역변수
메서드 선언부에 정의됨
메서드 실행시 생성되고, 메서드 종료시 사라짐.
package com.kh.method;
public class MethodLocalVariable {
public static void main(String[] args) {
//main의 지역변수로 종료되면 사라짐.
String name = "철수";
int age = 20;
System.out.println("say 실행 전 :" + name);
say(name, age);
System.out.println("say 실행 후 :" + name);
}
public static void say(String name, int age) {
name = "지원";
System.out.println(name);
//name, age는 매개변수이자 이 메서드의 지역변수
}
}
say 메서드에서만 지원으로 출력되며 main에서는 변하지 않고 철수로 출력됨.
package com.kh.method;
public class MethodLocalVariable {
public static void main(String[] args) {
//Call By Value(값에 의한 호출) -> 자바는 무조건 이방식으로 호출
//메모리에 담긴 값 자체를 전달
//기본형 -> 값(데이터) 자체가 복사됨
//참조형 -> 참조값(주소)이 복사됨
// 주소값을 복사해서 같은 객체를 가르키게 되므로,
// 내부 데이터를 변경하면 원본에도 영향을 줌
//기본형
int num = 10;
changeValue(num);
System.out.println("mian에서 changeValue 호출 후 : " + num);
}
public static void changeValue(int value) {
System.out.println("전달받은 value : " + value);
value = 100;
System.out.println("변경된 value : " + value);
}
}
기본형은 값이 전달되며, main의 값은 변하지 않음.
package com.kh.method;
public class MethodLocalVariable {
public static void main(String[] args) {
//참조형
int[] arr = {1,2,3};
changeReference(arr);
System.out.println("main문의 arr---------------------");
for (int n : arr) {System.out.print(n + " ");}
}
public static void changeReference(int[] array) {
System.out.println("전달받은 array------------------------------");
for (int n : array) {System.out.print(n + " ");}
System.out.println();
array[0] = 100;
System.out.println("전달받은 array 0번째 변경완료");
}
}
참조형을 전달하면 실제 값 자체를 전달하는 것이 아니라 참조형에 담긴 주소값을 전달하기 때문에
해당 주소로 접근해서 원본 데이터를 변경할 수 있다.
그러므로 참조형은 메서드의 원칙을 위반하기에 주의하여 사용해야 한다.
'JAVA' 카테고리의 다른 글
| JAVA 7일차 (3) | 2025.08.13 |
|---|---|
| JAVA 6일차 (3) | 2025.08.12 |
| JAVA 5일차(1) (2) | 2025.08.11 |
| JAVA 4일차(3) (2) | 2025.08.08 |
| JAVA 4일차(2) (2) | 2025.08.08 |