일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카카오
- 김영한
- 알고리즘정렬
- 엘라스틱서치
- 자바스크립트
- 알고리즘
- 이펙티브자바
- 이차전지관련주
- effectivejava
- 이펙티브 자바
- 자바
- 스프링핵심원리
- k8s
- kubernetes
- java
- 예제로 배우는 스프링 입문
- 스프링 핵심원리
- Effective Java
- 오블완
- ElasticSearch
- 스프링
- 코딩테스트
- Sort
- 카카오 면접
- JavaScript
- 티스토리챌린지
- Effective Java 3
- Spring
- 클린아키텍처
- 스프링부트
- Today
- Total
Kim-Baek 개발자 이야기
자바 기본 (14) - static, 싱글톤 본문
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다
◎ Static 키워드(제한자)
- instance 변수, 메소드, static block, inner class 에서 사용된다.
- 의미 : Class 의 멤버 -> 객체와는 관계없다 (단 한개만 존재하게 된다)
- Card 클래스에서 kind 나 number의 경우 각 카드마다 달라지는 값이다
그러나 weight, height 의 경우 모든 카드에 동일한 값이다! -> Class 에 종속시키자 (Static)
ex) Class A{
static int var; -> new A( ) 를 했을 때, var과 go()는 객체안에 존재하지 않는다.
static void go( ){
}
}
※ 메모리 영역
- heap : instance 가 저장되는 영역
- 실행 stack : 실행 중인 메소드의 지역변수가 저장
- Method (Class) 영역 : class 변수들이 저장
※ class의 멤버 : Method (Class)영역에 저장,(메모리) loading 시점은 프로그램이 시작될 때이다.
-> class loading 시점
- Static 메소드의 경우 instance 멤버에 직접 접근할 수 없다.
( static 이 loading 된 시점에 instance 는 로딩이 되지 않는다 -> 객체를 만들어야 한다)
ex) class A{
int a;
static void go(){
System.out.println(a); -> int a 에 접근 불가능
}
}
◎ 변수의 비교
-> Singleton Pattern
- 객체를 한개만 생성하는 class 구현 패턴
- business logic (업무처리) 처리하는 class 들에 적용
※객체는 속성과 기능을 갖는 것으로 구분 지을 수 있다. 클래스도 마찬가지이다.
속성을 갖는 클래스 : V.O -> DataType : 회원이 100명이면 100개의 객체를 만들어야하며 그 수에 따라 여러개가 됨.
기능을 갖는 클래스 : B.S -> 회원을 관리하는 객체가 여러개 만들어 진다면?? 1, 2, 3번 고객은 1번 관리객체가 갖고, 4, 5 번 고객은 2번 관리객체가 갖는 다면 올바르게 관리가 되지 않는다. 전체리스트를 출력하려고 한다면? -> 문제가 발생하기 때문에 이런 클래스는 객체를 하나만 만드는 것이 좋다.
- 싱글톤의 구현
private static SingletonClass2 instance;
private SingletonClass2()
{
}
public static SingletonClass2 getInstnace()
{
if(instance == null)
{
instance = new SingletonClass2();
}
return instance;
}
}
※이클립스 사용
- 다른데서 만든 소스코드를 옮길경우 -> 드래그를 통해 src 에 넣자 (copy 는 workspace 에, link 파일의 위치에서 부른다)
- 이클립스 기능 - 오른쪽 마우스키 source -> organize import (ctrl + shift + o) 하면 자동으로 import 한다.
※API
API 다운로드 - oracle.com -> java for development ->Java se 8 documentation
※public static final
어디서는 같은 값을 사용할 수 있도록 한다. 보통 int 로 많이 표현(string 은 switch 문으ㅏ 사용 불가능 하고, int 의 경우 실제 값과 매치가 잘 안되기 떄문에 상수형을 쓰도록 강제하는 효과도 있다)
'개발 > java basic' 카테고리의 다른 글
자바 기본 (16) - 상속, 다형성 (0) | 2020.10.07 |
---|---|
자바 기본 (15) - 의존 관계, is a, has a (0) | 2020.10.06 |
자바 기본 (13) - 가변인자, 패키지, import (0) | 2020.10.04 |
자바 기본 (12) - 자바의 메모리 영역, 호출 스택 (0) | 2020.10.03 |
자바 기본 (11) - 생성자, 접근제한자, VO (0) | 2020.10.02 |