Java

[Java] Static

안도일 2022. 10. 22. 15:37
static 변수

 

객체 A를 생성하지 않고도 이미 메모리 위에 올라와 있는 static 변수 s에 값을 줄 수 있다

 

class A{
	int aa;
	int bb;
	int cc;
	static int s = 30;
	
}
public class ATest {

	public static void main(String[] args) {
		
		A.s = 50; //객체가 생성되기 전에 먼저 선언가능
		
		A obja = new A();
		obja.aa = 4;
		obja.bb = obja.aa*2;
		obja.cc = A.s;
		
		System.out.println("obja cc = " + obja.cc + " A s = " + A.s);
        // 실행결과 obja cc = 50, A s = 50
	}
}

 

 

static 함수

 

static으로 정의된 함수는 객체 Calc1을 정의하지 않아도 이미 메모리 위에 올라와 있기 때문에 main에서 객체를 생성하지 않고 호출할 수 있다

 

class Calc1{
	
	static int abs(int a) {
		return (a>0)?a:-a;
	}
	
	static int max(int a, int b) {
		return (a>b)?a:b;
	}
	
	static int min(int a, int b) {
		return (a<b)?a:b;
	}
}
public class ClacEx {

	public static void main(String[] args) {
		System.out.println(Calc1.abs(-5));
		System.out.println(Calc1.max(10,8));
		System.out.println(Calc1.min(-3,-8));

	}
}

 

 

예제

 

static을 활용하여 환율을 계산하는 프로그램을 작성해 보자

 

class CurConv{
	private static double rate; //static을 사용하면 객체를 선언하지 않고도 접근 할 수 있음
	
	static void setRate(double r) {
		rate = r;
	}
	
	static double toDollar(double won) {
		return won/rate;
	}
	
	static double toKWR(double dollar) {
		return dollar*rate;
	}
}

public class StaMember {

	public static void main(String[] args) {
		CurConv.setRate(1433.40);
		
		System.out.println("백만원은 " + CurConv.toDollar(1000000) + " 달러입니다.");
		System.out.println("백달러는 " + CurConv.toKWR(100) + " 원입니다.");

	}
}