static
예약어변수와 메소드에 붙여서 쓸 수 있다.
static
변수✍️ 설명 코드
package test;
class Re {
static int s = 0; //static변수
int i; //인스턴스 변수
}
public class StaticTset {
public static void main(String[] args) {
//static변수는 객체를 생성하지 않고도 클래스이름.변수명으로 사용이 가능하다.
System.out.println(Re.s); //0
Re re1 = new Re();
Re re2 = new Re();
//인스턴스 변수 i는 객체마다 각각 부여된다.
re1.i = 1;
re2.i = 2;
//인스턴스 변수 i는 서로 다른 값이 출력
System.out.println(re1.i); //1
System.out.println(re2.i); //2
//static변수 s는 클래스마다 같은 값이 출력
System.out.println(re1.s); //0
System.out.println(re2.s); //0
//static변수는 객체이름.변수명으로 접근할 수 있지만 클래스이름.변수명이 권장된다.
}
}
👉 인스턴스변수는 각각 다른 값을 갖지만 static변수는 공통으로 사용되는 것을 확인 할 수 있다.
객체를 생성하지 않고도 변수에 접근할 수 있다.
클래스이름.변수명
static
메소드: 메소드에 static예약어를 붙여 사용
객체를 생성하지 않고도 메소드를 사용할 수 있다.
class Re {
static int s = 0;
int i;
static void st() {
System.out.println("짜잔");
}
}
public class StaticTset {
public static void main(String[] args) {
//static메소드는 인스턴스를 생성하지 않고도 클래스이름.메소드로 사용할 수 있다.
Re.st();
Re re1 = new Re();
re1.st();
}
}
class Re {
static int s = 0;
int i;
static void st() {
System.out.println("짜잔");
// i = 1; 인스턴스 변수는 클래스 메소드 내에서 사용할 수 없다.
s = 2; //static변수
int d = 3; //지역변수
}
}
⭕ static
변수, 지역변수(해당 클래스 내에서 선언한 변수)
❌ 인스턴스 변수
static
메소드는 인스턴스가 생성되지 않아도 사용할 수 있는 메소드다. 따라서 인스턴스가 생성되어야지만 쓸 수 있는 인스턴스 변수는 올 수 없다.
👉 생성 시점을 고려해서 변수를 사용해야함을 알 수 있다.
static
변수
잘 봤습니다. 좋은 글 감사합니다.