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 키워드가 없는 메소드는 인스턴스 생성해야만 사용할 수 있다. 인스턴스 메소드로 부른다.