개인공부/java
메서드 호출, 값 전달
케잉
2024. 1. 15. 20:32
public class Method2 {
public static void main(String[] args){
printHeader();//1. 매서드 작동!
System.out.println("프로그램이 동작합니다");
printFooter();
}
public static void printHeader() { //매개변수 없어서 그냥 호출되고
System.out.println(" = 프로그램을 시작합니다 = ");//실행 후 종료
return;//main으로 리턴
}
public static void printFooter() {
System.out.println(" = 프로그램을 종료합니다 = ");
}
}
📢 메서드 호출이 끝나면 더이상 해당 메서드가 사용한 메모리를 낭비할 이유가 없다
매서드 정의에 사용한 파라미터 변수인 int a, int b와 그 안에서 정의한 int sum도 모두 제거된다
public class Method1Ref {
public static void main(String[] args){
//계산1
int sum1 = add(5, 10);
System.out.println("결과1 출력:" + sum1);//4
//계산2
int sum2 = add(15, 20);
System.out.println("결과2 출력:" + sum2);//8
}
//add 메서드
public static int add(int a, int b) {
System.out.println(a + "+" + b + "연산 수행"); // 실행 순서1// 순서5
int sum = a + b;//2 //6
return sum;//3 //7
}
}
public class MethodValue0 {
public static void main(String[] args) {
int num1 = 5;
//num1의 값을 복사해서 num2에 넣는 것
//복사한다고 표현하는 이유는 num1의 값을 읽어도 num1에 있는 기존값이 유지되고
//새로운 값이 num2에 들어가기 때문이다, num1 변수 자체가 num2에 들어가는 게 아니다
//num1에 들어있는 값을 읽고 복사해서 num2에 넣는 것이다.
int num2 = num1; //num 1=5, num2=5
num2 =10; //num2에 10이됨
System.out.println("num1=" + num1);
System.out.println("num2=" + num2);
}
}
public class MethodValue1 {
public static void main(String[] args) {
int num1 =5;
System.out.println("1. changeNumber 호출 전, num1: " + num1);
changeNumber(num1); //5의 값을 복사해서 num2에 전달 ★★
//num2의 값이 바뀌더라도 num1의 값에는 영향X
System.out.println("4. changeNumber 호출 후, num1: "+ num1);
}
public static void changeNumber(int num2){ //num2=num1 = 5 // 5가 넘어옴 //
System.out.println("2. changeNumber 변경 전, num2: "+ num2);
num2 = num2 * 2; //5*2 =10 ==> 10은 num2에 들어감
System.out.println("3. changeNumber 변경 후, num2 " + num2); //10
}
}
public class MethodValue2{
//main()도 메서드이다. 각각의 메서드 안에서 사용하는 변수는 서로 완전히 분리된 다른 변수임
//이름이 같아도 완전히 다른 변수다
//main()의 number와 changeNumber()의 number는 서로 다른 변수이다
public static void main(String[] args) {
int number=5;
System.out.println("1. changeNumber 호출 전, number: " + number);
changeNumber(number);
System.out.println("4. changeNumber 호출 후, number: "+ number);
}
public static void changeNumber(int number){
System.out.println("2. changeNumber 변경 전, number: "+ number);
number = number * 2; //5*2 =10 ==> 10은 num2에 들어감
System.out.println("3. changeNumber 변경 후, number " + number);
}
}
public class MethodValue3 {
//main()도 메서드이다. 각각의 메서드 안에서 사용하는 변수는 서로 완전히 분리된 다른 변수임
//이름이 같아도 완전히 다른 변수다
//main()의 number와 changeNumber()의 number는 서로 다른 변수이다
public static void main(String[] args) {
int num1=5;
System.out.println("1. changeNumber 호출 전, num1: " + num1);
num1 = changeNumber(num1); //11번 10 리턴받음
System.out.println("4. changeNumber 호출 후, num1: "+ num1); // num1 = 10이 됐음
}
public static int changeNumber(int num2){
num2 = num2 * 2;
System.out.println(num2); //10
return num2; //10을 리턴
}
}
public class MethodReturn1 {
public static void main(String[] args) {
boolean result = odd(2);
System.out.println(result); //false
}
public static boolean odd(int i) {
if(i % 2 == 1) { //false //void 아니라서 boolean이면 return type 꼭 반환해줘야함
return true;
}else{
return false;
}
}
}