관리 메뉴

프로그래밍 삽질 중

Static(정적) 멤버와 인스턴스 멤버 특징과 문제 본문

과거 프로그래밍 자료들/자바(Java)

Static(정적) 멤버와 인스턴스 멤버 특징과 문제

평부 2021. 3. 2. 23:19

※ Static(정적)멤버 사용시 주의할 점

- static 키워드: 클래스의 필드들을 공유하게 됨(동일한 클래스의 객체들에 의해 공유)

- static 변수(클래스 변수) : static 키워드로 지정하여 객체마다 생성하는 것이 아니라 클래스 당 하나만 생성됨

- 객체 내부가 아닌 별도 공간에서 생성

- static 형식

ex) static int m;     static void g() {} - 전역변수와 전역함수를 만들 때 사용 : 자바의 캡슐화 원칙(캡슐처럼 포장해 세부내용 외부가 알 수 없음) 지킴- static 메소드는 오직 static 멤버만 접근 가능- static 메소드 내에서 this키워드 사용 불가

 

인스턴스 멤버 사용시 주의할 점- 멤버는 객체마다 별도로 존재(각각 공간 유지)- 객체 생성 시 함께 멤버 생성됨- 객체가 사라지면 멤버도 사라짐- 동일한 클래스의 객체들에 의해 공유되지 않음- 인스턴스 형식ex) int n;     void g() {}

 

 

 

[문제 1]환율변환 프로그램환율이 1234일 경우 백만원은 몇 달러이며 백달러는 몇 원인가?

 

 

 

 

[문제1 답]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class CurrencyConverter {
    private static double rate; //한국 원화에 대한 환율
    public static double toDollar(double won) { //한국 원화를 달러로 변환
        return won/rate;
    }
    public static double toKWR(double dollar) {//달러를 한국 원화로 변환
        return dollar*rate;
    }
    public static void setRate(double r) { //환율 설정.KWR/$1
        rate = r;
    }
}
 
public class CurrencyConverterEx {
 
    public static void main(String[] args) {
        CurrencyConverter.setRate(1234); //환율
        System.out.println("백만원은 " + CurrencyConverter.toDollar(1000000));
        System.out.println("백달러는 " + CurrencyConverter.toKWR(100));
 
    }
 
}
 
cs