static
이 붙은 메소드- ✨객체생성 없이✨(->참조변수 없이)✨
-> 💖클래스명.메소드명();
으로 호출
->Math.random();
,Math.round();
...
static
이 없는 메소드- ✨✨인스턴스 생성 후
-> 🎆참조변수.메소드명();
으로 호출
static 메소드
: ✨✨✨✨인스턴스 변수iv를 안쓸 때
-> 주로 ✨매개변수lv를 받아서 쓴다.
static 변수
: 속성(멤버 변수)중에서 공통 속성일 때
. | 인트턴스메소드 | static메소드 | 비고 |
---|---|---|---|
iv | O | X | 객체생성필수 |
cv | 언제든O | 언제든O | 객체생성안해도됨 |
매개변수 | Δ | 보통O | . |
인스턴스메소드 | O | X | |
static메소드 | 언제든O | 언제든O |
예제 다시 연습
이거 직접 작성하자.
class MyMath2 {
long a, b; //인스턴스 메소드
long instanceadd() { //인스턴스 메소드
return a+b;
}
static long staticadd(long a, long b) { //static 메소드, 지역변수lv
return a+b; //지역변수lv
//iv는 static메소드가 사용 못함!!!
}
}
public class MyMathTest2 {
public static void main(String[] args) {
// static 공부하기
// static은 요렇게
System.out.println("static 메소드 : "+MyMath2.staticadd(20L, 10L));
// 객체없이 바로 호출
// 인스턴스는 요렇게
MyMath2 mm = new MyMath2(); // 객체 생성 필수
mm.a = 22L; // 객체 생성 후 참조변수로 인스턴스 변수 불러옴
mm.b = 11L; // 참조변수.인스턴스변수
System.out.println("인스턴스 메소드 : "+mm.instanceadd());
// 참조변수.인스턴스메소드
}
}
static 메소드 : 30
인스턴스 메소드 : 33