<싱글톤(singletone pattern)>
: 영역은 하나인데, 해당 영역을 사용하는 변수가 두 개 이상인 경우를 말한다.
->static 영역은 최초 한 번만 메모리를 할당하고 그 메모리에 객체를 만들어 사용하는데(메소드와 변수는 인스턴스를 생성하지 않고 즉시 사용), 이 경우 해당 영역을 사용하는 변수가 두 개 이상이 되면 메소드를 처리할 마다 변수, 함수가 날아가버린다(사용하고 버려짐). 순차적으로 작업을 처리할 때 주로 사용한다.(stateless <-> stateful)
ex. 한 반의 30명의 학생들의 성적을 한 번에 처리할 수 있다.
-장점: 메모리를 획기적으로 줄일 수 있다.
-단점: 이전의 상태로 되돌아갈 수 없다.
<예제>
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
31
32
33
34
35
36
37
38
39
|
class StaticClass2 {
public static StaticClass2 sc = null; // 클래스 변수
int kuk = 100; // 멤버 변수
public static StaticClass2 getInstance() {
if(sc == null) {
sc = new StaticClass2(); // 인스턴스 생성하라
}
return sc;
}
}
public class StaticClassMain2 {
public static void main(String args[]) {
StaticClass2 sc = new StaticClass2();
StaticClass2 sc2 = new StaticClass2();
System.out.println("sc.hashCode: " + sc.hashCode);
System.out.println("sc2.hashCode: " + sc2.hashCode);
System.out.println("--------------------");
StaticClass2 sc3 = StaticClass2.getIstance();
StaticClass2 sc4 = StaticClass2.getInstance(); // 같은 곳을 가리킨다.
System.out.println("sc3.hashCode: " + sc3.hashCode);
System.out.println("sc4.hashCode: " + sc4.hashCode);
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
<final>
: 바꿀 수 없다.
-변수: 상수를 만들 때 -> 변수를 바꿀 수 없는, 의 의미가 된다.
-메소드: 오버라이딩이 되지 않는다.
-클래스: 상속 불가(더 이상 분할 불가, 자손 없음, 가장 말단 클래스가 된다)
<예제>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
class Final {
int money = 20000;
final int day = 7;
final int week = 4;
final int month = 12; // 상수
public Final() {
}
}
public class StaticMain {
public static void main(String args[]) {
Final fi = new Final();
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
'20.03 ~ 20.08 국비교육 > JAVA' 카테고리의 다른 글
생성자의 생략, 코드 중복 (0) | 2020.03.25 |
---|---|
변수 유효범위 (0) | 2020.03.24 |
클래스 JVM 메모리 운영, Static variable과 Method (0) | 2020.03.22 |
Call by value vs Call by reference (0) | 2020.03.21 |
클래스 멤버 메소드 (0) | 2020.03.21 |