일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- distinct()
- 대칭형 알고리즘
- arrange()
- select()
- groupe_by()
- dplyr
- filter()
- samp;e_frac()
- mutate()
- sample_n()
- summarize()
- AES
- proc contents
- Today
- Total
Gae Ko's Blog
[JAVA] 정적변수와 정적메소드 (static) 본문
static 멤버 (정적 변수와 메소드) → static이라는 키워드가 변수나 메소드 이름앞에 붙여서 사용
정적 변수
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Counter { static int count = 0; // static을 붙이지 않았다면? Counter() { this.count++; System.out.println(this.count); } public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); } } | cs |
count변수가 정적변수가 아니라면?
객체 c1, c2 생성시 count값을 1씩 증가하더라도 c1와 c2의 count는 서로 다은 메모리를 가리키고 있기 때문에 누적된 값(카운트가 증가된 값)이 나오지 않는다. (객체를 아무리 많이 만들어도 해당 변수는 하나만 존재)
정적변수가 되면 변수 count는 모든 Counter객체에 대해서 값이 공유되어 객체가 생성될 때 마다 count값이 증가되는 결과를 얻을 수 있다.
정적 변수(static variable) : 모든 객체를 통틀어서 하나만 있는 변수
인스턴스 변수(instance variable) : 객체마다 하나씩 있는 변수
* 정적 변수를 사용하는 이유 :
1. 메모리 할당이 한 번만 되므로 메모리 사용에 이점
2. static으로 설정하면 같은 곳의 메모리 주소만을 보기 때문에 그 클래스의 모든 객체들에 의하여 static변수 값을 공유하게 된다.
정적 메소드
정적 메소드란 객체를 생성하지 않고 사용할 수 있는 메소드로 클래스 이름을 통하여 호출된다.
정의자체가 객체를 생성하지 않고 사용할 수 있는 메소드이므로 객체 안에서 존재하는 인스턴스 변수나 인스턴스 메소드를 호출하거나 접근하거나 사용할 수 없다. 즉, 정적 메소드 안에서는 정적 변수, 지역 변수, 정적 메소드만을 사용할 수 있음
// static 멤버들이 먼저 로딩된다. 일반 객체의 변수나 메소드는 그 후에 만들어지므로 이들을 참조해서 쓸 수 없다.
// static을 쓰면 객체 생성을 하지 않아도 되니 여러모로 편리하고 메소드를 호출하는 시간이 짧아져 효율적이고 속도도 빠르다.
[참고]
'프로그래밍언어 > JAVA' 카테고리의 다른 글
[JAVA] 참조? (1) | 2018.03.17 |
---|---|
[JAVA] 생성자(constructor) (0) | 2018.03.12 |
[JAVA] this 와 this() (0) | 2018.03.12 |
11월 21일 (0) | 2017.11.22 |
main 메소드 (0) | 2017.11.14 |