본문 바로가기
반응형

IT 개인 공부/Java38

[Java] 싱글톤 패턴(Singleton Pattern) 구현 방법 싱글톤 패턴은 생성(Creational) 패턴 중 하나로써 객체를 오직 하나만 생성하여 생성된 객체를 프로그램 어디에서나 접근하여 사용할 수 있도록 하는 패턴이다. ​간단히 말해서 애플리케이션 전체에서 단 하나의 객체만 생성하고 필요할 때마다 이 객체에 접근하여 사용하겠다는 의미이다. ​이번 글은 싱글톤 패턴을 구현하는 방법을 중점으로 정리할 것이기 때문에 싱글톤 패턴에 대해 좀 더 자세히 알고 싶다면 다음 글을 참고하길 바란다. https://sorjfkrh5078.tistory.com/107 싱글톤 패턴(Singleton Pattern) 싱글톤 패턴은 생성(Creational) 패턴 중 하나로써 객체를 오직 하나만 생성하여 생성된 객체를 프로그램 어디에서나 접근하여 사용할 수 있도록 하는 패턴이다. .. 2021. 7. 21.
[Java] 초기화 블록(Initialization Block) Java에선 클래스 변수, 인스턴스의 변수의 초기화가 복잡하거나 공통된 부분이 많을 경우 초기화 블록을 사용하면 코드를 간결하게 할 수 있다. ​초기화 블록의 종류로는 Static Block과 Instance Block이 존재한다. 초기화 블록은 다음과 같이 클래스 내에 선언하여 사용하면 된다. static { //Static Block } { //Instance Block } 너무 간단한 내용이라서 다음 코드의 실행 결과를 보면 초기화 블록이 어떤 것인지 이해할 수 있을 것이다. class InitializationBlock { static String staticBlock; String instanceBlock; static { //Static Block staticBlock = "클래스 로딩 시 한.. 2021. 7. 21.
[Java] 예외의 종류 프로그램 개발을 하다 보면 다양한 오류가 발생할 수 있다. Java에서는 오류가 발생하면 어떤 오류인지를 개발자에게 알려줘서 오류를 처리할 수 있도록 기능을 지원해 준다. ​Java에서의 예외는 크게 Error, RuntimeException, OtherException, 3가지의 종류가 존재한다. 이들에 대해서 알아보도록 하자. 먼저 Error이다. ​Error는 메모리 부족(OutOfMemoryError), 스택오버플로우(StackOverFlowError)처럼 자바 가상 기계(JVM)나 하드웨어 등 시스템의 문제로 발생하는 것을 의미한다. ​즉, 개발자가 처리할 수 있는 영역이 아니기 때문에 Error가 발생하면 프로그램을 종료시키는 것이 보통이다. ​ 다음으로 Exception이다. ​Error와 .. 2021. 7. 19.
[Java] try-with-resources : 자원을 할당하는 방법 Java에선 Stream이나 DB Connection처럼 다양한 자원을 외부에서 사용할 수 있다. ​하지만 어떤 언어든지 간에 자원을 사용한 후 더 이상 사용할 필요가 없다면 자원의 효율성을 위해 반환해 줘야 한다. ​ 예를 들어 입력을 받기 위해 다음과 같은 객체들을 사용한다고 하자. 입출력 관련 객체를 사용할 때는 다양한 예외 처리를 위해 보통 try-catch 문으로 감싸서 사용한다. BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); //br 객체를 사용 br.close(); } catch (Exception e) { //Exception 처리 } 하지만 위 코드는 문제가 존재한다. tr.. 2021. 7. 19.
[Java] BigInteger : 큰 수를 표현하는 방법 Java에서 정수를 표현하는 자료형은 byte, short, int, long이 존재한다. 이들은 각각 다음과 같은 크기의 정수를 표현할 수 있다. 즉, 최대 범위인 long으로 표현할 수 있는 -9223372036854775808 ~ 9223372036854775807 내의 정수밖에 표현할 수 없다. ​그렇다면 long 범위를 벗어나는 수를 표현하고 싶다면 어떻게 해야 할까? ​예를 들어 10000000000000000000을 표현하고 싶다고 하자. ​일단 long으로는 이 수를 표현할 수 없다. 하지만 문자열로 표현한다면 이 수를 표현할 수 있다. 일단 수를 표현하는 데까지는 성공하였다. 하지만 이 수를 이용해서 다양한 연산을 할 수 있어야 한다. ​학창 시절 수학 문제를 풀 때 두 수를 덧셈하는 방.. 2021. 7. 19.
[Java] 접근 제한자 Java는 클래스들로 이루어져 있으며 클래스는 필드, 메서드 등 멤버들을 가지고 있다. ​이렇게 클래스에서 연관 있는 멤버들을 묶어서 가지고 있는 작업을 캡슐화(Encapsulation)라고 한다. ​캡슐화의 특징 중 하나는 보안과 관련된 정보 은닉이다. 클래스의 멤버들 중 외부로 노출되어도 되는 것도 있지만 외부로 노출해서는 안 되는 것들도 존재할 수도 있다. ​예를 들어 사람의 정보를 가진 클래스가 존재할 경우 이름이나 나이 같은 것들은 외부에 노출되어도 괜찮지만 주민등록번호 같은 민감한 정보는 외부에 노출되면 안 된다. ​따라서 클래스 내의 멤버에 접근할 경우 범위를 제한해 줄 수 있어야 한다. ​이를 가능하게 해주는 친구가 바로 접근 제한자이다. ​Java에서는 public, protected, .. 2021. 7. 16.
[Java] 향상된 for 문 : for-each Java5에서부터 향상된 for문이라고 부르는 for-each문이 도입되었다. 일반적인 for문과 거의 비슷하지만 내부적으로 조금 다르게 순회하는 방법이다. ​for-each문의 형태는 다음과 같다. for (type var: iterate) { body-of-loop } type은 int, String 등 변수 타입을 의미하며 iterate는 순환할 자료구조를 의미하며 Array나 Collection 등의 자료구조를 사용할 수 있다. ​예를 들어 String 형태의 변수를 가지는 리스트가 있을 경우 이를 순회할 때 다음과 같이 사용할 수 있다. List list = Arrays.asList("A","B","C","D","E"); ---------- 기존의 for 문 -------------- for (.. 2021. 7. 16.
[Java] 정규 표현식(Pattern, Matcher) 정규 표현식(Reqular Expression)은 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 검색하거나 치환하는 과정을 매우 간편하게 처리할 수 있도록 하는 수단이다. ​이메일이나 전화번호 등 특정 문자열을 확인할 때 if문과 for문을 통해 지저분하게 처리하던 것을 정규 표현식을 활용하면 훨씬 간단하고 깔끔하게 처리할 수 있다. ​Java에서는 util.regex 패키지에서 제공하는 Pattern과 Matcher 라이브러리를 사용하여 정규 표현식을 활용할 수 있다. ​실제로 문자열 클래스인 String 클래스는 특정한 조건의 문자를 검색하거나 치환하는 메서드를 정규 표현식을 활용하여 구현하였다. ​대표적으로 matches, replaceAll, replace, split 메서드들이 있다... 2021. 7. 16.
[Java] 참조 유형(Strong, Soft, Weak, Phantom) Java는 모든 것들이 객체로 이루어져 있다고 봐도 무방하다. 또한 객체들은 new 연산을 통해 Heap 영역에 생성되기 때문에 이들은 GC(Garbage Collection) 대상이 될 수 있다. ​Java에선 메모리가 부족하면 JVM의 Garbage Collector가 스택 영역과 힙 영역을 탐색하면서 스택 영역의 변수가 더 이상 참조하지 않는 힙 영역의 객체들에 대해 GC를 수행해 줌으로써 메모리를 관리한다. ​하지만 개발자가 객체의 참조 강도를 약하게 만들어 GC 대상이 될 수 있도록 만들어 JVM의 메모리를 어느 정도 관리할 수도 있다. ​객체의 참조 강도를 조절할 수 있는데 Java의 참조 유형은 크게 Strong, Soft, Weak, Phantom 4가지가 존재한다. 그렇다면 각 유형들에 .. 2021. 7. 16.
반응형