공유 데이터
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);
}
}
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);
}
}