[정적 멤버변수]
1. static 개요
- 일반적으로 클래스의 객체가 생성될 경우 멤버변수는 각각의 객체가 독립적으로 사용
- 여러 객체가 멤버변수를 공유하고자 할 경우 static 키워드 사용
- static 멤버변수 정의 문법
class ExamStatic { -> 클래스 명칭 : ExamStatic
static int count = 0; -> 멤버변수 2개 정의 count(객체가 여러개 생성되어도 공유 가능), age
int age = 30;
}
- 위와 같은 클래스의 경우 count 변수는 생성된 객체에서 공유할 수 있으며 age 변수는 객체마다 독립적으로 유지됨
ExamStatic a = new ExamStatic();
ExamStatic b = new ExamStatic();
count(공유됨) | |
age = 30 | age = 30 |
a b
a나 b 객체에서 count 변수가 변하게 되면 같이 변함
- static 멤버변수는 생성된 객체의 개수를 셀 필요가 있을 경우 유용하게 사용
- static 멤버변수는 아래와 같이 객체 생성 없이 멤버에 접근 가능
ex) ExamStatic.count;
- static 멤버변수는 클래스명으로도 접근할 수 있고 객체 생성 후 객체변수로도 접근 가능
- static 멤버변수는 객체 생성 이전에 메모리 할당 -> new 연산자를 이용한 생성 없이 사용 가능
2. 정적 멤버변수 정의와 활용
- 정적 멤버변수를 정의
class ExamStatic {
static int count = 0;
}
- 정적 멤버변수 사용 : 접근 방법 2가지
-> 객체 생성 후 객체변수로 접근
ExamStatic test = new ExamStatic();
test.count = 1;
-> 클래스명으로 접근
ExamStatic.count = 2;
클래스명.멤버변수명
class TestCls {
static int num = 0;
}
TestCls.num = 1;
+예제 : 정적 멤버변수 예제
class ExamStatic {
static int count = 0;
}
public class ExamTest {
public static void main(String args[]) {
System.out.println(ExamStatic.count); -> count 변수 0 출력
ExamStatic.count = 1; -> count 변수를 1로 변경
System.out.println(ExamStatic.count); -> Static 변수이므로 count변수 출력값 1
}
}
[정적 메서드]
1. 정적 메서드 개요
- 클래스 차원에서 사용 가능한 메서드
- 객체 생성 없이 클래스명으로 간편하게 호출 가능
- 정적 메서드 내에서는 일반 멤버변수 사용 불가능
- 정적 메서드 정의 예
class ExamStatic {
static int count = 0;
int age = 30;
public static int getCount() { -> getCount라는 메서드 정의, 반환 타입은 int. 정적 메서드
return count;
}
}
- 정적 메서드 호출 예
1) 객체생성 후 객체변수를 이용해서 접근하는 방법
ExamStatic test = new ExamStatic();
test.getCount();
2) 클래스명으로 직접 접근하는 방법(객체 생성 없이)
ExamStatic.getCount();
2. 정적 메서드 활용
- 라인을 출력하기 위한 정적 메서드의 정의 밒 사용
class ExamStatic {
public static void printLine() {
System.out.prinln("=========================");
}
public static void main(String args[]) {
ExamStatic.printLine(); -> new를 사용한 객체 생성없이 클래스명으로 바로 호출
}
}
- 자바에서 제공하는 수학관련 클래스인 Math 클래스의 정적 메서드를 사용
-> 0.0과 1.0사이의 난수를 출력
System.out.println(Math.random()); -> 임의의 실수값 출력
-> 제곱근을 출력
System.out.println(Math.sqrt(25.0)); -> 5.0을 반환
- static 메서드와 멤버변수 정의 및 사용 예
public class Exam12_1 {
static int count = 0;
int age = 30;
public static int getCount();
return count;
}
public static void main(String[] args) {
System.out.println(Exam12_1.getCount()); -> 0
Exam12_1.count++;
System.out.println(Exam12_1.getCount()); -> 1
}
}
- 자바에서 제공하는 Math 클래스 사용 예
public class Exam12_2
public static void main(String[] args) {
System.out.println(Math.random());
System.out.println(Math.sprt(25.0));
}
}
.. 무슨 말인지 잘 모르겠다.
'프로그래밍 > 자바(java) 융합개발자 2차' 카테고리의 다른 글
[취성패] 자바 배우기 - 선수학습(추상 클래스) (0) | 2020.12.13 |
---|---|
[취성패] 자바 배우기 - 선수학습(상속과 접근제어) (0) | 2020.12.13 |
[취성패] 자바 배우기 - 선수학습(생성자) (0) | 2020.12.12 |
[취성패] 자바 배우기 - 선수학습(메서드와 오버로딩) (0) | 2020.12.12 |
[취성패] 자바 배우기 - 선수학습(클래스) (0) | 2020.12.12 |