πŸ’» 곡뢀 기둝/β˜• Java

Java | λ©”μ†Œλ“œ(Method)

  • -

μ‘°κΈˆμ΄λΌλ„ 더 κΈ°μ–΅ν•˜κ³ μž, 이미 있던 글을 ν•˜λ‚˜ ν•˜λ‚˜ μž‘μ„±ν•˜λ©΄μ„œ κΈ°λ‘ν•˜λŠ” 쀑

 

이번 곡뢀도..

 

 

 

γ„±γ…ˆγ…‡

 

 


 

 

[좜처 : μ ν”„ 투 μžλ°”]

 

 

λ©”μ†Œλ“œ(Method)

파이썬(Python)μ—μ„œλŠ” ν•¨μˆ˜λΌλŠ” μ΄λ¦„μœΌλ‘œ 배운 적이 μžˆλŠ”λ° μ—¬κΈ°μ„œ λ§ν•˜λŠ” λ©”μ†Œλ“œλŠ” 클래슀λ₯Ό λ– λ‚˜ μ‘΄μž¬ν•˜λŠ” 것은 μžˆμ„ 수 μ—†κΈ° λ•Œλ¬Έμ— μžλ°”μ˜ ν•¨μˆ˜λŠ” λ”°λ‘œ μ‘΄μž¬ν•˜μ§€ μ•Šκ³  클래슀 내에 μ‘΄μž¬ν•œλ‹€κ³  λ§ν•œλ‹€.

즉 클래슀 λ‚΄μ˜ ν•¨μˆ˜λ₯Ό λ©”μ†Œλ“œλΌ λΆ€λ₯Έλ‹€.

 

λ©”μ†Œλ“œλ₯Ό μ™œ μ‚¬μš©ν•˜λŠ”κ°€?

λ˜‘κ°™μ€ λ‚΄μš©μ„ λ°˜λ³΅ν•΄μ„œ 적고 μžˆλŠ” λΉ„νš¨μœ¨μ μΈ μžμ‹ μ„ λ°œκ²¬ν•  λ•Œ, λΉ„λ‘œμ†Œ λ©”μ†Œλ“œλ₯Ό μ™œ μ‚¬μš©ν•˜λŠ”κ°€λ₯Ό μ•Œ 수 μžˆμ„ 것이닀. μ΄λŸ¬ν•œ λ‚΄μš©μ„ ν•˜λ‚˜μ˜ λ­‰μΉ˜λ‘œ λ¬Άμ–΄μ„œ "μ–΄λ–€ μž…λ ₯값을 μ£Όμ—ˆμ„ λ•Œ μ–΄λ–€ 리턴값을 λŒλ €μ€€λ‹€" λΌλŠ” μ‹μ˜ κ΅¬μ„±μœΌλ‘œ λ§Œλ“€ 수 μžˆλ‹€.

int sum(int a, int b) { // a, bλŠ” λ§€κ°œλ³€μˆ˜
    return a + b;
}
  • sum μ΄λΌλŠ” λ©”μ†Œλ“œ
  • μž…λ ₯κ°’μœΌλ‘œ 두 개의 κ°’(int μžλ£Œν˜• a, int μžλ£Œν˜• b)
  • 두 개의 μž…λ ₯값을 λ”ν•œ κ²°κ³Όκ°’(int μžλ£Œν˜•)을 λŒλ €μ£ΌλŠ” λͺ…λ Ή(return)
public static void main(String[] args) {
    int a = 3;
    int b = 4;

    Sample sample = new Sample();
    int c = sample.sum(a, b);

    System.out.println(c);  // 7 좜λ ₯
}

 

λ§€κ°œλ³€μˆ˜μ™€ 인수

  • λ§€κ°œλ³€μˆ˜ : λ©”μ†Œλ“œμ— μž…λ ₯으둜 μ „λ‹¬λœ 값을 λ°›λŠ” λ³€μˆ˜
  • 인수 : λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ μ „λ‹¬ν•˜λŠ” μž…λ ₯κ°’

 

λ©”μ†Œλ“œμ˜ μž…λ ₯κ°’, 리턴값

λ©”μ†Œλ“œλŠ” λ“€μ–΄μ˜¨ μž…λ ₯값을 가지고 μ–΄λ–€ 처리λ₯Ό ν•˜μ—¬ μ μ ˆν•œ 리턴값을 λŒλ €μ£ΌλŠ” λΈ”λž™λ°•μŠ€μ™€ κ°™λ‹€

μž…λ ₯κ°’ ---> λ©”μ†Œλ“œ(λΈ”λž™λ°•μŠ€) ----> 리턴값

 

λ©”μ†Œλ“œμ˜ ꡬ쑰

λ¦¬ν„΄μžλ£Œν˜• λ©”μ†Œλ“œλͺ…(μž…λ ₯μžλ£Œν˜•1 λ§€κ°œλ³€μˆ˜1, μž…λ ₯μžλ£Œν˜•2 λ§€κ°œλ³€μˆ˜2, ...) {
...    
return 리턴값;  // λ¦¬ν„΄μžλ£Œν˜•μ΄ void 인 κ²½μš°μ—λŠ” return 문이 ν•„μš”μ—†λ‹€.
}

 

λ©”μ†Œλ“œμ˜ μž…μΆœλ ₯ μœ λ¬΄μ— λ”°λ₯Έ 4가지 μœ ν˜•

☝️ Method sample = new Method(); 곡톡 클래슀 μ‚¬μš©

 

μž…λ ₯κ³Ό 좜λ ₯이 λͺ¨λ‘ μžˆλŠ” λ©”μ†Œλ“œ

public class A2_Method {
    // λ¦¬ν„΄κ°’λ°›μ„λ³€μˆ˜ = 객체.λ©”μ†Œλ“œλͺ…(μž…λ ₯인수1, μž…λ ₯인수2, ...)
    int sumA(int a, int b) { 
        return a + b;
    }

    // μž…λ ₯ κ°’ - int μžλ£Œν˜• a, int μžλ£Œν˜• b
    // 리턴 κ°’ - int μžλ£Œν˜•
}

μ‚¬μš© 예

public static void main(String[] args) {
    // μž…λ ₯κ³Ό 좜λ ₯이 λͺ¨λ‘ μžˆλŠ” λ©”μ†Œλ“œ
    A2_Method sample = new A2_Method();
    int result = sample.sumA(3, 4);
    System.out.println(result); // 7 좜λ ₯
}

 

μž…λ ₯κ³Ό μΆœλ ₯이 λͺ¨λ‘ μ—†λŠ” λ©”μ†Œλ“œ

public class A2_Method {
    // λ¦¬ν„΄κ°’λ°›μ„λ³€μˆ˜ = 객체.λ©”μ†Œλ“œλͺ…()
    String say() { 
        return "Hi";
    }

    // μž…λ ₯ κ°’ - μ—†μŒ
    // 리턴 κ°’ - String μžλ£Œν˜•
}

μ‚¬μš© 예

public static void main(String[] args) {
    String sayA = sample.say();
    System.out.println(sayA); // "Hi" 좜λ ₯
}

 

μž…λ ₯은 μ—†κ³  μΆœλ ₯은 μžˆλŠ” λ©”μ†Œλ“œ

public class A2_Method {
    // 객체.λ©”μ†Œλ“œλͺ…(μž…λ ₯인수1, μž…λ ₯인수2, ...)
    void sumB(int a, int b) {
        System.out.println(a + "κ³Ό " + b + "의 합은 " + (a + b) + "μž…λ‹ˆλ‹€.");
    }

    // μž…λ ₯ κ°’ - int μžλ£Œν˜• a, int μžλ£Œν˜• b
    // 리턴 κ°’ - void (μ—†μŒ)
}

μ‚¬μš© 예

public static void main(String[] args) {
    // μž…λ ₯은 μ—†κ³  좜λ ₯은 μžˆλŠ” λ©”μ†Œλ“œ
    sample.sumB(3, 4);
    // κ³„μ‚°λœ μž…λ ₯값은 μ—°μ‚° ν›„ κ²°κ³Όκ°’μœΌλ‘œ λŒμ•„μ˜€μ§€ μ•ŠλŠ”λ‹€.
    // μ•„λž˜ 좜λ ₯은 print ν•¨μˆ˜λ‘œ ν‘œμ‹œλœ 것일 뿐
}

 

μž…λ ₯은 μžˆκ³  μΆœλ ₯은 μ—†λŠ” λ©”μ†Œλ“œ

public class A2_Method {
    // 객체.λ©”μ†Œλ“œλͺ…()
    void sayC() {
        System.out.println("Hi");
    }

    // μž…λ ₯ κ°’ - μ—†μŒ
    // 리턴 κ°’ - void (μ—†μŒ)
}

μ‚¬μš© 예

public static void main(String[] args) {
    // μž…λ ₯은 있고 좜λ ₯은 μ—†λŠ” λ©”μ†Œλ“œ
    sample.sayC();
}

 

return의 또 λ‹€λ₯Έ μ“°μž„μƒˆ

public class A2_Method {
    // return 의 λ‹€λ₯Έ μ“°μž„ (λ©”μ†Œλ“œ 섀계)
    void sayNick(String nick) {
        if ("fool".equals(nick)) {
            return; // 맀개 λ³€μˆ˜μ— fool 이 ν¬ν•¨λœλ‹€λ©΄ return 으둜 λΉ μ Έλ‚˜μ˜¨λ‹€.
        }
        System.out.println("λ‚˜μ˜ 별λͺ…은 " + nick + "μž…λ‹ˆλ‹€.");
    }
}

μ‚¬μš© 예

public static void main(String[] args) {
    // return 의 λ‹€λ₯Έ μ“°μž„ (λ©”μ†Œλ“œ μ‚¬μš©)
    // νŠΉλ³„ν•œ κ²½μš°κ°€ ν•„μš”ν•  λ•Œ return 을 톡해 λ©”μ†Œλ“œλ₯Ό λΉ μ Έλ‚˜κ°ˆ 수 μžˆλ‹€.
    sample.sayNick("angel");
    sample.sayNick("fool"); // 좜λ ₯ μ•ˆλ¨

    // 이 방법은 λ¦¬ν„΄μžλ£Œν˜•μ΄ void인 λ©”μ†Œλ“œμ—λ§Œ ν•΄λ‹Ή
    // λ¦¬ν„΄μžλ£Œν˜•μ΄ λͺ…μ‹œλ˜μ–΄ μžˆλŠ” λ©”μ†Œλ“œμ—μ„œ return 문만 λ‹¨λ…μœΌλ‘œ μž‘μ„±ν•˜λ©΄ 컴파일 였λ₯˜
}

 

λ©”μ†Œλ“œ λ‚΄μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜μ˜ 효λ ₯ λ²”μœ„

λ©”μ†Œλ“œ μ•ˆμ—μ„œλ§Œ μ“°μ΄λŠ” λ³€μˆ˜λ₯Ό λ‘œμ»¬ λ³€μˆ˜λΌκ³  λΆ€λ₯Έλ‹€.

public class A2_Method {
    void varTestA(int a) {
        a++; // κΈ°λŠ₯을 ν•˜μ§€ μ•ŠμŒ
    }

    // μ‘μš© 1
    int varTestB(int b) {
        b++; // μ¦κ°€μ‹œν‚€κ³ 
        return b; // return 으둜 빼쀬닀.
    }

    // μ‘μš© 2 (객체λ₯Ό λ„˜κΈ°λŠ” 방법)
    int c; // 객체 λ³€μˆ˜

    void varTestC(A2_Method sample) { // Sample 클래슀의 κ°μ²΄λ³€μˆ˜λ‘œ μ„ μ–Έ
        sample.c++;
    }
}

μ‚¬μš© 예

public static void main(String[] args) {
    int varA = 1;
    sample.varTestA(varA);
    System.out.println(varA); // 1 좜λ ₯
    // 좜λ ₯이 μ¦κ°€λ˜μ§€ μ•Šκ³  1이 λ˜λŠ” 이유
    // λ©”μ†Œλ“œ λ‚΄μ—μ„œ μ‚¬μš©λ˜λŠ” λ³€μˆ˜λŠ” λ©”μ†Œλ“œ μ•ˆμ—μ„œλ§Œ μ“°μ—¬μ§€λŠ” λ³€μˆ˜μ΄κΈ° λ•Œλ¬Έ
    // μœ„μ˜ λ©”μ†Œλ“œμ—μ„œ μž…λ ₯ 인수λ₯Ό λœ»ν•˜λŠ” λ³€μˆ˜ aλŠ” λ©”μ†Œλ“œ μ•ˆμ—μ„œλ§Œ μ“°μ΄λŠ” λ³€μˆ˜μ΄μ§€ λ©”μ†Œλ“œ λ°–μ˜ λ³€μˆ˜ aκ°€ μ•„λ‹˜

    // μ‘μš© (μΈμˆ˜κ°’μ„ μ¦κ°€μ‹œν‚€κΈ°)
    int varB = 1;
    varB = sample.varTestB(varB);
    System.out.println(varB); // 2 좜λ ₯

    // μ‘μš© 2 (객체λ₯Ό λ„˜κΈ°λŠ” 방법)
    sample.c = 1;
    sample.varTestC(sample);
    System.out.println(sample.c);
}

 

this ν™œμš©ν•˜κΈ°

public class A2_Method {
    int d; // κ°μ²΄λ³€μˆ˜ d

    void varTestD() {
        this.d++;
    }
    // sample 객체λ₯Ό μ΄μš©ν•˜μ—¬ varTestDλΌλŠ” λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•  경우 ꡳ이 sample 객체λ₯Ό 전달할 ν•„μš”κ°€ μ—†λ‹€
    // μ™œλƒν•˜λ©΄ μ „λ‹¬ν•˜μ§€ μ•Šλ”λΌλ„ varTestD λ©”μ†Œλ“œλŠ” thisλΌλŠ” ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ 객체에 μ ‘κ·Όν•  수 있기 λ•Œλ¬Έ
}

μ‚¬μš© 예

public static void main(String[] args) {
    sample.d = 1;
    sample.varTestD();
    System.out.println(sample.d); // 2 좜λ ₯
}

'πŸ’» 곡뢀 기둝 > β˜• Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Java | μƒμ„±μž(Constructor)  (0) 2023.01.06
Java | 상속(Inheritance)  (0) 2023.01.06
Java | 클래슀(Class)  (0) 2023.01.06
Java | λ¬Έμžμ—΄(String)  (0) 2023.01.06
Java | 문자(char)  (0) 2023.01.06
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.