안녕하세요 Shiny Ocean 입니다 : ) 이번 포스팅에서 다루어볼 내용은 지난 포스팅에 이어서 "예외"입니다. 개요 지난 포스팅에서 우리는 예외란 무엇인지, 예외는 어떠한 클래스로 구성되고 어떠한 방식으로 처리되는지 기본적인 내용들에 대하여 다루어 보았습니다. 이번 포스팅에서는 그 내용을 그대로 이어서 자동 리소스 닫기, 예외 떠넘기기, 사용자 정의 예외, 예외 정보 얻기 등을 다루어 보겠습니다. 자동 리소스 닫기 자바 버전7 부터 생겨난 try-with-resources 는 예외 발생의 여부와 상관 없이 사용했던 리소스 객체의 close()메소드를 호출하여 리소스를 닫아줍니다. (입출력을 위해 사용하는 Scanner 클래스의 close()메소드가 대표적인 예입니다) 여기서 리소스 객체라 함은 각종..
안녕하세요 Shiny Ocean 입니다 : ) 이번 포스팅에서 다루어볼 내용은 예외 입니다. 개요 개발을 진행하다보면 여러가지의 예외와 마주치게 됩니다. 특히 자바에서는 NULL과 관련된 예외를 마주하는 경우가 참 많습니다. 그런데 이러한 예외를 에러와 동일하게 생각하면 안됩니다. 비슷한 어감에 비슷한 뜻인것 같지만 예외와 에러는 다릅니다. 이번포스팅은 예외의 기본적인 개념과 예외클래스를 다루어 보겠습니다. 예외 VS 에러 먼저 예외와 에러 둘다 오류입니다. 개발자가 의도한 정상적인 범주의 동작에서 벗어난 것이기 때문입니다. 에러의 경우 하드웨어의 오동작으로 인한 오류일수도 있습니다. 에러가 발생한다면 프로그램은 종료됩니다. 정상적인 상태로 돌아갈수 없이 해당 에러의 원인을 찾아 근본적으로 고치지 못한다..
안녕하세요 Shiny Ocean 입니다 : ) 이번 포스팅에서 다루어볼 내용은 어노테이션입니다. 개요 어노테이션은 메타데이터의 일종으로서 데이터를 설명해주는 데이터이다. 자바에서는 크게 세가지의 용도로 사용됩니다. 1. 코드 문법 작성 에러를 체크하도록 추가 정보 제공 ex) @Override 2. 개발 툴이 빌드나 배치시 코드를 자동으로 생성할수 있도록 정보를제공 3. 런타밍시 특정 기능을 실행하도록 정보를 제공, 어떠한 객체가 특별한 역할을 수행하여야 할때 ex) 서블릿, 컨트롤러 웹개발을 진행하다보면 다양한 어노테이션들을 사용하게 될것입니다. 그냥 편하게 동작원리를 모른체로 기계적으로 사용해도 무방하지만 알고 넘어가면 더 좋을것 같아 다루어 보게되었습니다. 어노테이션 타입 정의 소스파일 생성 : 어..
안녕하세요 :) Shiny Ocean 입니다. 이번 포스팅에서 다루어볼 내용은 싱글톤입니다. 개요 싱글톤이란 하나의 어플리케이션 내에서 단 하나만 생성되는 객체를 말합니다. new연산자를 통해 생성자를 호출할수 없도록 막기 위해 private 접근제한자를 통해 생성자를 만들고 클래스 자신의 타입으로 static 필드를 선언하여 자신의 객체를 생성해 초기화 합니다. 이렇게 한다면 외부에서 new 연산자를 통한 동일객체 다중 생성을 막을수 있습니다. 즉 메모리의 활용도가 좋아지고 단순한 필요성의 객체의 경우 간결한 사용이 가능해집니다. 예제 아래의 예제는 싱글톤을 선언하고 이를 메인에서 불러온것이다. 싱글톤에서 가장 핵심이 되는것 세가지 아래와 같다. 1. 생성자의 접근제한자를 private으로 하여 객체의..
안녕하세요 :) Shiny Ocean 입니다. 이번 포스팅에서 다루어볼 내용은 추상클래스와 인터페이스의 선언과 구현입니다. 개요 추상클래스와 인터페이스는 얼핏보면 굉장히 비슷해 보입니다. 추상클래스와 인터페이스는 본체 안에 완벽하게 구현된 메소드가 없습니다. 리턴타입과 접근제한자, 매개변수와 이름정도로만 추상적으로 메소드를 선언합니다. 구체적인 설계전에 스캐치를 따거나 구상도를 그리는 작업과 비슷합니다. 하지만 추상화 시키는 정도에 따라 그리고 활용도에 따라 이둘은 구분됩니다. 인터넷에 돌고도는 표현들중 가장 명확하게 제 머리에 들어온 표현은 아래와 같습니다. 인터페이스를 구현하면 "기능"을 추가할수 있고, 추상클래스를 구현하면 "속성"을 부여할수 있다. 추상클래스, 인터페이스 특징 비교 추상클래스의 특..
안녕하세요 Shiny Ocean 입니다 : ) 이번 포스팅에서 다루어볼 내용은 객체지향프로그래밍입니다. 본문 OOP, Object Oriented Programming, 부품 객체를 먼저 만들고 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법입니다. 이때 부품으로 사용되는 각각의 객체들은 속성과 동작으로 구성됩니다, 이를 필드와 메소드라 합니다. 하나의 객체내에 반드시 메소드가 존재하여야 하는것은 아니지만 필드값은 존재하여야 합니다. 예를 들어 간단한 사칙연산을 하는 프로그램예제를 다루어보겠습니다. public class Exam { public static void main(String[] args) { int a = 1; int b = 2; int result = 0; result = a + ..
안녕하세요 Shiny Ocean 입니다 : ) 이번 포스팅에서 다룰 내용은 enum 열거타입 변수입니다. 개요 사용자가 직접 변수에 접근하는 키워드와 변수의 값을 지정한다는 점이 json이나 파이썬 딕셔너리와 비슷해보이긴하지만 개념적으로는 조금 다른것 같습니다. 기본적인 자바프로그래밍을 할때는 사용하지 않던 변수이지만 자바를 이용한 서비스 개발이나 응용프로그램을 제대로 개발할때는 정말 많이 사용되는것 같습니다. 사실 저도 개발 공부를 해온지 2년이 되가지만 이 enum의 존재 자체도 몰랐다가 최근 몇개월전에 존재를 알게 되었습니다. Enum Enumeration Type의 약어로 한국어로 열거타입이라 한다, 한정된 값만을 갖는 데이터 타입으로 한정된 값은 열거 상수로 정의 한다. 한정된값(ex 시간, 요..
안녕하세요 Shiny Ocean 입니다 : ) 이번 포스팅에서 다룰 내용은 자바의 스트링 타입과 객체에 대한것 입니다. 개요 우리는 앞서 지금까지 참조타입으로 정의할수 있는 "객체"에 대하여 계속 다루고있었습니다. 이번엔 문자열 클래스만 따로 집중적으로 다루어 보겠습니다. 알고리즘 문제를 해결하다보면 탐색트리나 그래프의 노드를 객체로 표현하고 해당 필드의 값을 문자열로 표현하는등의 방법을 많이 사용하는데, 이때 탐색과정에서 분명 같은 문자열인데 다르다고 나오거나 다른 문자열인데 같다고 나오는경우들이 있었습니다. 이러한 것은 문자열의 데이터에만 집중하다보니 해당 타입이 참조타입이라는것을 망각하고 발생시킨 오류입니다. 이번포스팅을 통해 문자열 클래스에 대하여 배우게 된다면 이러한 오류도 왜 생기게 되었는지 ..