본문 바로가기

Java

(10)
디자인 패턴(Design Pattern) 디자인패턴이란? - 소프트웨어 공학에서 프로그램 개발 시 자주 만나게되는 문제 상황에 대한 일반적이고 재사용 가능한 추상화된 해결책이다.(문제 해결을 위해 Best Practice화 했다고 정의할 수도 있다.) - 소프트웨어 공학적으로 패러다임 & 알고리즘과는 다르다. - 다수의 구체적인 상황이나 알고리즘이 아닌, 일반화된 해결책이다. [1] 싱글턴 패턴 어떤 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스에 접근할 수 있는 전역적인 접촉점을 제공하는 패턴 하나의 인스턴스를 메모리에 등록하여 여러 쓰레드가 동시에 해당 인스턴스를 공유하여 사용하게끔 합니다. 인스턴스를 여러개 만들게 되면 자원을 낭비하게 되거나 버그를 발생시킬 수 있는 것을 방지할 수 있다. (1) SingletonClass.ja..
This / This()와 Super / Super() [ This / This() ] public class thisEx { int value = 100; public thisEx(int value) { System.out.println(value); } public static void main(String[] args) { thisEx ex = new thisEx(2); } } 위 코드에서 클래스 영역의 value를 100으로 주고 thisEx를 객체화 하며 2라는 파라미터를 넣어줬다. 이때 생성자는 2를 value로 받아서 사용하기때문에 콘솔엔 2가 나온다. public class thisEx { int value = 100; public thisEx(int value) { System.out.println(this.value); } public st..
접근제한자 자바는 main() 메소드를 포함한 실행 클래스 외에는 외부 클래스에서 사용할 목적으로 설계되어있습니다. 외부클래스에서 다큰클래스를 사용할 시 무분별하게 변경되거나 한다면 안전하지 않습니다. 따라서 생성자를 호출하지 못하게 하거나, 필드에 접근하지 못하게, 메소드를 호출하지 못하게 하는 등 접근제한자를 통해 제한할 수 있습니다. - Public : 같은 프로젝트 내 - Protected : 같은 패키지 내, 다른 패키지에서 상속받아 자손에서 접근 가능 - Default : 같은 패키지 내 - Private : 같은 클래스 내
변수명 표기법이 중요한 이유 사람이건 물건이건 무언가를 부르기 위해서는 이름이라는 것이 필요합니다. 변수 또한 그렇고 개발자로 일한다면 다른 사람이 짠 코드를 봐야하는 경우가 생깁니다. 일관성이 있고 알아보기 쉬운 변수명은 가독성에 많은 영향을 줄 수 있습니다. 저는 읽기 좋은 코드가 좋은 코드라고 생각합니다. 예를들어 누구는 유저 아이디의 변수명을 u_i로, 누구는 uid로 정한다면 일관성이 없고 알아보기가 어렵게 됩니다. 따라서 아래와같은 변수명 표기법들 중 하나로 약속하고 프로젝트를 협업하는 것이 좋습니다. [1] 캐멀(카멜) 표기법 : korScore -> 각단어의 첫 문자 대문자(맨 처음 문자는 소문자) [2] 파스칼 표기법 : KorScore -> 각단어의 첫 문자 대문자 [3] 스네이크(언더스코어) 표기법 : kor_s..
자바 메모리 영역 1) 메소드(Method) 영역 클래스를 로더로 읽어 클래스 별로 런타임 상수풀, 필드 데이터, 메소드 데이터, 생성자 코드 등으로 분류해서 저장, 전역변수, static변수 할당, JVM 시작시 생성, 모든 스레드가 공유 2) 스택(Stack) 영역 매개변수(파라미터), 지역변수(로컬변수), 함수(메소드)등 할당 LIFO방식, 사용이 끝나면 바로 소멸, 컴파일 시 메모리 할당 3) 힙(Heap) 영역 객체(인스턴스) 저장, 가비지컬렉터가 메모리 관리 참조하는 변수나 필드가 없으면 의미 없는 객체로 분류하여 제거 +++ 전역/지역/정적 변수란? 1) 전역변수 - 프로그램에서 전반적으로 다 사용가능 2) 지역(로컬)변수 - 함수 안에서만 사용가능 3) 정적(Static)변수 - 한 번 정의하면 프로그램 종..