본문 바로가기

Back-end/Java

[Java - 기본] static 메서드1

 

✅ 인스턴스 메서드


✏️ DecoUtil1

package static2;

public class DecoUtil1 {

  public String deco(String str) {
    String result = "*" + str + "*";
    return result;
  }
}

deco()는 문자열을 꾸미는 기능을 제공한다. 문자열이 들어오면 앞 뒤에 *을 붙여서 반환한다.



✏️ DecoMain1

package static2;

public class DecoMain1 {

  public static void main(String[] args) {
    String s = "hello java";
    DecoUtil1 utils = new DecoUtil1();
    String deco = utils.deco(s);

    System.out.println("before: " + s);
    System.out.println("after: " + deco);
  }
}



🖥️ 실행 결과

deco() 메서드를 호출하기 위해서는 DecoUtil1의 인스턴스를 먼저 생성해야 한다.
그런데 deco()라는 기능은 멤버 변수도 없고, 단순히 기능만 제공할 뿐이다. 인스턴스가 필요한 이유 멤버 변수(인스턴스 변수)등을 사용하는 목적이 큰데, 이 메서드는 사용하는 인스턴스 변수도 없고, 단순히 기능만 제공한다.



📚 인스턴스 메서드

static이 붙지 않은 메서드는 인스턴스를 생성해야 호출할 수 있다. 이것을 인스턴스 메서드라 한다.




✅ static 메서드


✏️ DecoUtil2

package static2;

public class DecoUtil2 {

  public static String deco(String str) {
    String result = "*" + str + "*";
    return result;
  }
}

DecoUtil2는 메서드 앞에 static이 붙어있다. 이렇게 하면 정적 메서드를 만들 수 있다.
그리고 이 정적 메서드는 정적 변수처럼 인스턴스 생성 없이 클래스 명을 통해서 바로 호출할 수 있다.



✏️ DecoMain2

package static2;

public class DecoMain2 {

  public static void main(String[] args) {
    String s = "hello java";
    String deco = DecoUtil2.deco(s);

    System.out.println("before: " + s);
    System.out.println("after: " + deco);
  }
}



🖥️ 실행 결과

Decoutil2.deco(s) 코드를 보자.
static이 붙은 정적 메서드는 객체 생성 클래스명 + .(dot) + 메서드 명으로 바로 호출할 수 있다. 정적 메서드 덕분에 불필요한 객체 생성 없이 편리하게 메서드를 사용했다.



📚 클래스 메서드

메서드 앞에도 static을 붙일 수 있다. 이것을 정적 메서드 또는 클래스 메서드라 한다. 정적 메서드라는 용어는 static이 정적이라는 뜻이기 때문이고, 클래스 메서드라는 용어는 인스턴스 생성 없이 마치 클래스에 있는 메서드를 바로 호출하는 것처럼 느껴지기 때문이다.

'Back-end > Java' 카테고리의 다른 글

[Java - 기본] static 메서드3  (0) 2024.04.20
[Java - 기본] static 메서드2  (0) 2024.04.19
[Java - 기본] static 변수3  (0) 2024.04.18
[Java - 기본] static 변수2  (0) 2024.04.18
[Java - 기본] static 변수1  (0) 2024.04.17