자바에서 메서드를 짤때 public static void 메서드명(파라미터) { }

이렇게 짜게 된다. 그러면 여기서 static은 뭘까?

 

 

static - class method

no static - instance method

 

라고 한다 음... static은 클래스에서 쓰고

no static은 인스턴스 선언 시 사용 한다고 한다

 

public class WhatisStatic {
    //static - class method
    //no static - instance method
    public static void main(String[] args) {
        //instance
        Print t1 = new Print();  //t1은 Print의 instance
        t1.delimiter = "=";
        //메소드가(a) 인스턴스의 소속일 때는 static을 빼줘야한다
        t1.a();


        String delimiter="-";
        Print.b(delimiter);
    }
}
class Print{
    public String delimiter;
    public void a() {
        System.out.println(this.delimiter);
    }
    public static void b(String delimiter) {
        System.out.println(delimiter);
    }
}

 

public static void b(String delimiter) {
    System.out.println(delimiter);
}

우선 Print 클래스에 public static void b(String delimiter) {} 를 보면 

위에서 썻던 것처럼 static이 있음으로 클래스 메소드이기 때문에 

Print.b(delimiter);
//Print.a();

Print.b(delimiter); 가 실행이 된다!!

근데 Print.a(); 는 오류가뜬다 이유 - static이 없어서

 

 

 

 

t1이라는 Print의 instance 선언 후

Print t1 = new Print();  //t1은 Print의 instance

t1인스턴스에 

public String delimiter;

delimiter라는 String이 있으므로 

t1.delimiter = "=";

라고 값을 준다

그런다음 t1에 a()메소드를 호출하면

t1.a();

 = 값이 나온다

즉, static은 클래스 메소드!!

 

 

 

 

+ Recent posts