본문 바로가기

프로그래밍/Java

Java_static변수와 메서드

static 변수

: static 변수는 공통으로 사용하는 변수가 필요한 경우 사용한다. (객체들이 공유해야 하는 데이터가 필요할 때)

모든 인스턴스가 하나의 저장공간을 공유하므로 항상 공통된 값을 갖는다.

 

- 여러 인스턴스가 공유하는 기준 값이 필요한 경우

- 회사 사원이 입사할 때마다 새로운 사번이 필요한 경우

- 은행에서 대기표를 뽑을 경우 (2대 이상)

→ 공유해야되는 변수가 필요할 때 'static' 키워드를 쓰면 됨

 

 

 

Employee 클래스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package ch01;
 
public class Employee {
 
    public static int serialNum = 1000;
 
    private int employeeId;
    private String employeeName;
    private String department;
 
    public Employee() {
        serialNum++;
        employeeId = serialNum;
    }
 
    public int getEmployeeId() {
        return employeeId;
    }
 
    public void setEmployeeId(int employeeId) {
        this.employeeId = employeeId;
    }
 
    public String getEmployeeName() {
        return employeeName;
    }
 
    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }
 
    public String getDepartment() {
        return department;
    }
 
    public void setDepartment(String department) {
        this.department = department;
    }
 
}
cs

→ 생성자에서 serialNum++;을 해주고 serialNum을 employeeId에 저장하였다.

 

 

EmployeeMainTest

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package ch01;
public class EmployeeMainTest {
 
    public static void main(String[] args) {
        Employee employeeLee = new Employee(); 
        employeeLee.setEmployeeName("이순신");
        
        Employee employeeKim = new Employee();
        employeeKim.setEmployeeName("김유신");
        
        Employee employeeGang= new Employee();
        employeeGang.setEmployeeName("강민정");
        
        System.out.println(employeeLee.getEmployeeName()+", "+employeeLee.getEmployeeId());
        System.out.println(employeeKim.getEmployeeName()+", "+employeeKim.getEmployeeId());
        System.out.println(employeeGang.getEmployeeName()+", "+employeeGang.getEmployeeId());
        
                System.out.println(Employee.serialNum);
    }
}
결과 화면
이순신, 1001
김유신, 1002
강민정, 1003
1003
cs

→ 객체를 생성한 다음 .setEmployeeName으로 이름을 저장하고 getEmployeeId()를 호출하면 위와 같은 결과를 얻는다.

→ static 변수는 객체 생성없이 '클래스이름.메서드이름'으로 호출이 가능하다.

 

 

static 메서드와 인스턴스(멤버변수를 다루는) 메서드 

인스턴스 메서드 

- 인스턴스 생성 후 '참조변수.메서드이름()'으로 호출

- 인스턴스 멤버와 관련된 작업을 하는 메서드이다.

- 메서드 내에서 인스턴스 변수 사용이 가능하다.

static 메서드

- 객체 생성 없이 '클래스이름.메서드이름()'으로 호출

- 인스턴스 멤버와 관련없는 작업을 하는 메서드이다.

- 메서드 내에서 인스턴스 변수 사용이 불가능하다.

 

 

 

>>> 클래스의 멤버변수 중 인스턴스에 공통된 값을 유지해야하는 것이 있으면 static을 붙여준다.

>>> 작성한 메서드 중에서 인스턴스 변수나 인스턴스 메서드를 사용하지 않는 메서드에 static을 붙일 것을 고려한다.

 

 

'프로그래밍 > Java' 카테고리의 다른 글

Java_상속과 다형성  (0) 2023.02.14
Java_배열, 객체 배열  (0) 2023.02.12
Java_this 사용법  (0) 2023.02.10
Java_접근 제어 지시자와 캡슐화  (0) 2023.02.09
Java_참조자료형 변수  (0) 2023.02.09