Java, static 메소드 사용하기

static 메소드를 알아보기 전 java 코드를 작성한다.
java 코드는 문자열을 꾸며주는 기능이다.
예를 들어 "cat" 문자 앞 뒤로 "🐧" 붙어서 "🐧cat🐧" 으로 꾸며준다.

Deco.java

package method1;

public class Deco {
    public String decoString(String str) {
        String result = "\uD83D\uDC27" + str + "\uD83D\uDC27";
        return result;
    }
}

Main.java

package method1;

public class Main {
    public static void main(String[] args) {
        String str = "Hello World";
        Deco deco = new Deco();

        System.out.println("Before String: " + str);
        System.out.println("After String: " + deco.decoString(str));
    }
}

출력 결과

Before String: Hello World
After String: 🐧Hello World🐧

앞서 개발된 decoString() 메소드를 호출을 위해서 Deco 객체를 먼저 생성하였다. decoString() 메소드에는 멤버 변수를 사용하지 않고, 단순한 기능만 제공할 뿐이다.
생성한 인스턴스 사용 목적으로는 인스턴스 변수의 사용인데, 이 메소드는 인스턴스 변수가 없으며 단순한 기능 제공이지만 불필요한 객체 생성 코드를 포함해야했다.


정적 메소드 만들기

앞서 말한 Deco 객체 생성 없이 static 를 활용하여 만들어 보도록 한다.
다음과 같이 Deco 클래스에서 decoString() 메소드에게 static 키워드를 붙어주었다.

Deco.java

package method1;

public class Deco {
    public static String decoString(String str) {
        String result = "\uD83D\uDC27" + str + "\uD83D\uDC27";
        return result;
    }
}

decoString() 메소드를 정적 메소드로 만들었다. 만들어진 정적 메소드는 인스턴스 생성 없이 바로 사용 가능하다.

Main.java

package method1;

public class Main {
    public static void main(String[] args) {
        String str = "Hello World";

        System.out.println("Before String: " + str);
        System.out.println("After String: " + Deco.decoString(str));
    }
}

static 키워드를 붙인 메소드를 불필요한 객체 생성하는 과정 없이 클래스명+dot(.)+메소드명 컨벤션으로 바로 호출할 수 있다.

클래스 메소드

static 키워드가 붙은 메소드, 정적 메소드 또는 클래스 메소드로 부른다. 클래스 메소드는 동적(Dynamic)으로 인스턴스 생성/삭제하는 과정이 없어 바로 호출되어 정적 메소드라 부른다.

인스턴스 메소드

static 키워드가 없는 메소드는 인스턴스 생성해야만 사용할 수 있다. 인스턴스 메소드로 부른다.

Could not load content