정적 변수와 매소드

JAVA 2020. 2. 11. 17:56
반응형

static 키워드를 사용하면 자바에서는 한가지 변수만 만들게 된다.

count 라는 변수를 확인해보면 두객체에서 실행했을떄 각각 변수를 설정하는 반면 static 키워드를 변수앞에 적어주면 하나의 변수만 할당을 하게된다. 이를 통해서 메모리적인 여유를 얻을 수 있다.

 

static method

 

 

매우 어렵고 신기 했다.

객체가 아닌 클래스로 매소드를 호출했다... 보통이라면 객체로 호줄되어야 한다. static 매소드를 이용해서 클래스에 대한 하나의 매모리를 만든 것인지 분석을 해보았다.

 

객체가 생성이되면 Heep영역에 매모리가 할당이 된다. 하지만 static 키워드를 하게 되면 heep 영역 밖에 다른 매모리 위치를 가지게 된다.

이때 변수에 대해서 모든 객체에서 공유가 가능하지만 GC관리 영역 밖에 매모리가 할당이 되면서 매모리 관리가 어려워진다. 그래서 많이 사용 할 경우 프로그램 종료시까지 매모리가 할당이 된 상태로 있는다.

 

힙오버 플로우라는 공격이 있다. 힙도 자료구조상 자료를 저장하는 공간으로 버퍼 오버플로우가 가능하여 공격이 가능하다.

 

 

예제 2의 소스 이다. 처음 했을떄 결과값이 이상해서 찾아 봤는데

 

utill 클래스는 유용한 패키지의 집합이고 SimpleDateFormat에서 데이터를 가져오는 패턴이 있느데 거기서 문제가 발생했다.

 

싱글톤 패턴

 

프로그램 개발에서 디자인 패턴은 매우 중요하다고 생각이 든다. 특히 이런 디자인 패턴을 머신러닝을 이용해서 악성코드소스의 디자인 패턴과 github등 코드 공유사이트에서 용의자를 찾아내는데 도움이 되지 않을까? 하는 생각이 든다. 

디자인 패턴은 정해져 있지만 프로그램 코드에 따라 사람마다 차이가 있기 때문에

 

우선 디자인 패턴중에 하나인 싱글톤 패턴에대해서 배워보자

싱글톤 패턴은 하나의 클래스에 하나의 객체를 만드는 것을 말한다.

 

클래스 하나에 2가지 클래스가 들어가는게 가능하나? 에서 의문이 들기 시작했고

그래서 두개의 클래슬 만들어 주었다.

 

 

접근제어자인 private 로 new를 이용해서 객체를 만드는 것을 제한했고

스테틱매소드로 메모리를 할당하여 heep영역 밖에 one 매모리를 할당했다.

 

Singleton 클래스에서는 객체가 한번 생성이 된다.

그리고 singletonTest에서 2개의 객체를 new를 이요하지 않고 객체를 만들고

두 객체에는 각각 one 이 return 된다. 

그리고 결과적으로 true가 리턴 된다.

 

특히 분기문에서 햇갈리는 부분이 있었는데

객체가 생성이 되지 않은 상태에서 클래스가 하나의 변수를 가지게 하기위한 분기이다.?

뭔가 이해가 되면서도 이해가 되지 않는다.... 

 

======================================

아 진짜 죽을 것 같다... 오늘 실밥풀고 동국대 수강신청 자료 찾아보고 특히 망할 프로그램 다운 받는데 5시간 가까이 허비한것 같다. 개빡친다.

 

인생의 동반자가 될것같은... 불길한 예감이 든다.

밀크티는 정말 잘만든 음식이다. 간단하고 속도 편하고 달고 부드럽다

영국 뽕 터진다.

 

걍 지금 멘탈 저세상 감ㅋ

반응형

'JAVA' 카테고리의 다른 글

쓰레드  (0) 2020.02.14
예외처리  (0) 2020.02.13
패키지  (0) 2020.02.10
파일 입출력  (0) 2020.02.06
콘솔 입출력  (0) 2020.02.03
Posted by 53C
,