-
Static변수는 정적변수라고 하며 기본형은 static예약어 자료형 변수이름 형식으로
static int Number;
처럼 만들 수 있다.
static 변수의 값은 모든 인스턴스가 공유할 수 있다.
또한, static 변수는 공유할 수 있기에 한 번만 생성이 되고 오바라이딩이 불가능하며 , 동일한 오브젝트 내에서 사용하면 멤버들에게 static을 붙여줘야한다.
인스턴스의 생성과 상관없이 먼저 생성되기에 클래스 변수라고도 불리운다.
static 변수로 데이터를 공유하는 예문을 만들어보기
package com.java.accountBank;
public class AccountBank {
String name;
static int amount = 0; // 초기값을 선언해야한다.//
public AccountBank(String name){
this.name = name;
}
public void saveMoney(int money){
amount += money;
System.out.println( "amount: " + amount);
}
public void spendMoney(int money){
amount -= money;
System.out.println("amount: " + amount);
}
public void getBankInfo(){
System.out.println("Info name: " +this.name);
System.out.println("amount : " + amount);
}
}
로 클래스를 만들고 main()함수를 호출하기 위해서 아래의 값을 만든다 .
...
AccountBank ABank = new AccountBank("홍글동");
ABank.saveMoney(500);
//클래스에서 생성된 인스턴스의 참조변수를 new생성자로 선언하여 참조변수가 메서드를 사용하도록 하였다.//
AccountBank BBank = new AccountBank("춘식이");
BBank.saveMoney(700);
// 같은 클래스지만 메모리 주소가 다르기에 여기서의 참조변수는 다른 값이다. 마찬가지로 참조변수에 메서드의 매개변수에 값을 넣었다.
BBank.getBankInfo();
ABank.spendMoney(500);
//static int amount = 0; 이기때문에 amount의 총량은 서로 공유한다.//
BBank.getBankInfo();
}
}
합계 출력은
amount: 500
amount: 1200
//saveMoney메서드를 new생성자에서 사용한 것이기에 유의하자//
//static int amount = 0; 이기때문에 amount의 총량은 서로 공유한다.//
Info name name: 춘식이
amount: 500
Info name name: 춘식이
amount: 700
으로 출력된다.
위의 예시에서 포인트는 static 변수로 데이터 값을 공유한 것과 사용자 정의 생성자의 매개변수를 이용해서 값을 쉽게 넣은 것, 그리고 메서드의 매개변수에 마찬가지로 값을 넣어서 new 생성자에서 쉽게 값을 넣었다는 것을 기억하자.
참고로 static변수는 인스턴스와 상관없이 먼저 생성하기에 초깃값을 선언한 후 증감식을 사용해서 static 변수의 초깃값을 늘릴 수 있다는 팁도 기억해두자.
'자바 > 자바 키포인트' 카테고리의 다른 글
[자바] extends 상속의 개념과 예시 정리하기 (0) 2022.11.07 [자바] 데이터 은닉의 public & private의 관계와 get(),set() 메서드의 사용 예시 정리하기 (0) 2022.11.06 [자바] 디폴트 생성자와 사용자 정의 생성자의 개념과 차이 정리하기 (0) 2022.11.05 [자바] 메서드와 파라미터의 예시와 메서드를 생성하는 생성자 예시 (0) 2022.11.04 [자바] 클래스라는 틀과 객체 생성과의 기본적인 관계 (0) 2022.11.04 댓글