컴퓨터프로그래밍/JAVA

JAVA - static

zelkova 2016. 5. 11. 17:56

<목차로 돌아가기>


  static 알아보기


이제까지 이렇게 해야 된다고 하니까 무작정 static을 써 왔습니다.


이번에는 static에 대하여 알아보려합니다.

1

2

3

4

5

6

7

 public class Exam 

 {

    public static void main(String[] args) 

    { 

        System.out.println(" 안녕하세요"); 

     } 

 }


이제까지 알아본 인스턴스가 되는 과정은 아래와 같습니다.

1. 현실에서 존재하는 그룹의 객체의 특성을 모은다

2. 모은 특성을 분석하여 클래스로 정의한다.

3. 정의된 클래스에 서로 다른 값을 부여하여 인스턴스로 만들어 객체로 표현한다.


이 과정에서 인스턴스의 멤버변수들은 클래스가 인스턴스화 되면서 각 인스턴스의 고유값을 저장하기 위한 인스턴스 변수로 존재한다는 것을 알 수 있습니다.


그런데 프로그램을 구현하다보면 종종 같은 클래스에서 파생된 인스턴스 사이에 정보를 공ㅇ뉴해야 하는 경우를 만납니다. 그러나 가각 고유한 메모리 공간을 할당받아 사용하는 인스턴스로 인스턴스들의 데이터를 공유한다는 것은 불가능 합니다.


이러한 문제를 해결해주는 것이 static 입니다.


아래의 예제를 보고 이해해 봅시다.


exam.java


1

2

3

4

5

6

7

8

9

10

11

12

13

 public class StaticExam 

 {

        static int num1; 

        int num2; 


    public static void main(String[] args) 

    { 

       StaticExam ste1= new StaticExam();

       StaticExam ste2= new StaticExam();


       ste1.num1=777;

       ste1.num2=2;

       ste2.num1=1004;

       ste2.num2=22;

       

       System.out.println(" ste1의 num1 :" + ste1.num1);

       System.out.println(" ste1의 num1 :" + ste1.num2);

       System.out.println(" ste2의 num1 :" + ste2.num1);

       System.out.println(" ste2의 num2 :" + ste2.num2);

    } 

 }


결과값은 아래와 같다.

1004

2

1004

22


여기서 첫번째 결과값을 보면 ste1.num1=777; 라는 코드를 집어 넣었는데 1004가 나온다.

즉 이 num1 변수는 전역변수로 공유하고 있다는 것을 알 수 있다.


static은 모두모두 쓸 수 있도록 공유하게 해주는 예약어라는 것을 알 수 있을 것이다.


그럼


  public static void main(String[] args) 


메서드에 static이 들어갔으니 전역적인 성격의 메서드라는 것을 알 수 있다.


여기서 주의해야할 점은 static 메서드에서 non static 필드에 직접 접근하지 못한다는 점이다. 그 이유는 static이 non-static 보다 먼저 생성되어 non-static에 접근할 수 없기 때문이다.

따라서 static에서 non-static으로 접근하면 에러가 뜨게 된다.



반응형

'컴퓨터프로그래밍 > JAVA' 카테고리의 다른 글

JAVA - AWT 컴포넌트의 이해  (0) 2016.05.14
JD-Eclips 다운 및 설치  (0) 2016.05.11
생성자  (0) 2016.05.11
객체지향 프로그래밍이란?  (0) 2016.05.11
JAVA - 조건문 switch  (0) 2016.05.10