[JAVA] static 메소드 (정적 메소드)

이현경·2021년 4월 20일
0

JAVA

목록 보기
41/77
  • 공유 데이터
    static에 만들어지는 변수는 모든 객체가 공유해서 사용할 수 있는 데이터
    순번을 매기고자 할 때 주로 사용 됨
    static 변수는 heap영역이 아닌 static 영역에 저장된다

  • 인스턴스 변수
    객체 내에서만 사용가능한 변수이믈 공유할 수 없다.


public class Ex09 {

	static double pi = 3.141592;	// static 변수 : 정적변수
	// 데이터 공유하기 위해서 사용			// class 변수
	
	int aaa = 10;
	double d = 20.5;
	public int plus(int num1, int num2) {
		return num1 + num2;
	}
	public static int minus(int num1, int num2) {
		return num1 - num2;
	}
}

public class Ex09Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Ex09 ex = new Ex09();
		int result = ex.plus(10, 20);
		System.out.println(result);
		result = ex.minus(20, 10);
		System.out.println(result);
		System.out.println(ex.aaa);
		System.out.println(ex.pi);
		
		result = (int) Ex09.pi;
		System.out.println(result);
		
		Ex09 ex1 = new Ex09();
		ex1.aaa = 12000;
		System.out.println("ex1.aaa : " + ex1.aaa);
		System.out.println("ex.aaa : " + ex.aaa);
		
		ex.aaa = 12000;
		System.out.println("ex1.aaa : " + ex1.aaa);
		System.out.println("ex.aaa : " + ex.aaa);
		// 인스턴스 변수는 다른 객체에서 값이 변했다고 해서 값이 바뀌지 않는다.
		
		ex.pi = 122;
		System.out.println("ex1.pi : " + ex1.pi);
		ex1.pi = 3000;
		System.out.println("ex.pi : " + ex.pi);
		
	}

}

public class Member {

	static int idx = 0;
	int memberNum;
	String name;
	String ph;
	String addr;
	
	public int getMemberNum() {
		return memberNum;
	}
	public void setMemberNum(int memberNum) {
		this.memberNum = memberNum;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPh() {
		return ph;
	}
	public void setPh(String ph) {
		this.ph = ph;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	
	
}

public class MemberTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Member mem1 = new Member();
		mem1.idx += 1;	// 0 + 1 = 1
		mem1.setMemberNum(mem1.idx);	// 1
		mem1.setName("이현경");
		mem1.setAddr("경기도");
		mem1.setPh("010-0000-0000");
		System.out.println(mem1.getMemberNum());

		Member mem2 = new Member();
		mem2.idx += 1;	// 1 + 1 = 2
		mem2.setMemberNum(mem2.idx);	// 2
		System.out.println(mem2.getMemberNum());
		
		Member mem3 = new Member();
		mem3.idx += 1;	// 2 + 1 = 3
		mem3.setMemberNum(mem3.idx);	// 3
		System.out.println(mem3.getMemberNum());
	}

}

public class Ex10 {

		int c;
		static int count;
		public Ex10() {
			c++;
			count++;
	}

}

public class Ex10Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Ex10 ex = new Ex10();
		System.out.println("ex.c : " + ex.c);
		System.out.println("ex.count : " + ex.count);
		
		Ex10 ex1 = new Ex10();
		System.out.println("ex1.c : " + ex1.c);
		System.out.println("ex1.count : " + ex1.count);
		
		Ex10 ex2 = new Ex10();
		System.out.println("ex.c : " + ex2.c);
		System.out.println("ex.count : " + ex2.count);
	}

}
  • static 메서드는 클래스명으로 호출하는 메서드이므로 객체를 통해 호출하지 않는다.

public class Ex11Test {

	// static 메서드는 클래스명으로 호출하는 메서드이므로 객체를 통해 호출하지 않는다.
	 
	public static void main(String [] args) {
		Ex11 ex = new Ex11();
		ex.test();
		ex.staticTest();
		Ex11.staticTest();	// 클래스 메서드
		int result = ex.plus(10, 20);
		System.out.println(result);
		result = Ex11.plus(10, 40);
		System.out.println(result);
	}
}
profile
25. 컴퓨터학과 졸업 / SQLD, 정보처리기사 취득

0개의 댓글