입출력 자원(IO Resource)프로그램은 운영체제에 자원을 할당받아 동작합니다.자원에는 연산을 담당하는 CPU, 주기억장치, 보조기억 장치 등이 있고 이러한 자원들을 할당 받게 됩니다.이러한 자원들은 여러 프로그램들이 필요로 하는 것이지만 한정되어 있기 때문에 여러 프로그램에게 공평하게 분배되어야 합니다.그러나 프로그램의 오류나 프로그램의 안좋은 동작방식에 의해 자원들을 할당받기만 하고 반납해주지 않는다면 다른 프로그램은 자원을 사용하지 못하게 될 것입니다.또한 점점 더 많은 자원을 요구하여 결국 모든 자원을 독점하고 사용하게 된다면 운영체제의 자원 고갈로 인해 치명적인 문제가 발생할 수 있습니다.이 중 가장 많은 문제가 발생하는 것이 입출력 자원입니다.프로그램은 수많은 대상과의 입출력을 수행하게 됩..
자바[Java]
2017. 12. 12. 00:37
[JAVA] 자바 향상된 예외 처리 - Multi Catch문
참고글[JAVA] 자바 예외 처리 방법 (Exception Handling)[JAVA] 자바에서 예외(Exception)란?멀티캐치하나의 try 블록에서 여러개의 예외가 발생하는 경우 많은 catch 블럭이 발생하게 됩니다.try{}catch(예외1 e1){ 예외1 처리 로직}catch(예외2 e2){ 예외2 처리 로직}catch(예외3 e3){ 예외3 처리 로직}그러나 이렇게 많은 catch문이 발생하면 그 안에서 중복되는 코드들이 발생할 수 있습니다.예를 들어 e.printStackTrace()를 통해 예외 정보를 출력하는 로직등이 대표적입니다.JDK1.7 부터는 이러한 불편함을 해소하기 위해 멀티캐치(multi catch)문을 제공합니다.멀티 캐치문은 다음과 같이 사용합니다. 하나의..
자바[Java]
2017. 12. 9. 08:00
[JAVA] 예외의 회피
예외의 회피예외의 회피라는 개념이 있습니다.예외가 발생할 수 있는 상황을 미리 예측하여 예외를 예방하는 것 입니다.물론 Checked 예외의 경우 예외처리를 강제하기 때문에 무조건 예외처리를 해 주어야 하지만 실행예외처럼 Unchecked 예외인 경우에는 예외를 회피할 수 있습니다.예를 들자면 다음 코드의 경우 String s를 대문자로 바꾸어 출력하는 예제입니다.NullPointerException은 Unchecked 예외이므로 컴파일 과정에서도 체크되지 않습니다.만약 이 때 if문에서 예외의 회피가 없었다면 s를 대문자로 바꾸는 과정에서는 예외가 발생하게 됩니다.String s = null;//예외를 회피하는 if구문if(s == null){ s = "empty";}System.out.print..
자바[Java]
2017. 12. 9. 00:53
[JAVA] 자바 예외 처리 방법 (Exception Handling)
예외처리란예외처리란 프로그램 실행 중 예기치 못한 상황이 발생했을 때 적절하게 조치를 취함으로써 프로그램이 수행하는 동작을 이상없이 진행하도록 하는 것입니다.우리가 개발한 프로그램이 사용자의 컴퓨터에서 실행되는 도중에는 오류가 발생해도 프로그램을 수정할 수 없기 때문에 프로그램 개발 시 미리 예외처리 코드를 작성하여 대비해야 합니다.에러와 같이 치명적인 오류는 처리하고 싶어도 처리할 수 없는 경우가 거의 대부분이기 때문에 오류 처리가 무의미하지만 예외의 경우에는 적절한 처리를 해준다면 신뢰성 있는 프로그램을 만드는 데에 큰 도움을 줄 것입니다.예외의 발생자바에서 예외가 발생했을때 어떠한 처리도 해주지 않는다면 이후 코드는 실행되지 않은 상태에서 JVM의 예외처리기까지 예외가 전달되고 예외처리기는 해당 예..
자바[Java]
2017. 12. 7. 01:50
[JAVA] 자바에서 예외(Exception)란?
프로그램 오류(Error)프로그램이 어떤 상황에서 예기치 못한 상황이나 원인에 의해 오작동하거나 비정상적으로 종료되는 경우를 프로그램 에러 또는 오류라고 합니다.오류는 크게 세 가지로 분류가 가능합니다.컴파일 에러 - 소스코드의 잘못된 문법 구문이나 오타, 잘못된 자료형 사용 등에 의해 컴파일 시점에 발생하는 에러로 자바를 예로 들자면 .java 소스파일을 .class파일로 컴파일 하는 과정에서 발생되는 에러라고 볼 수 있습니다.런타임 에러 - 컴파일이 제대로 된 이후 프로그램이 실행 중 발생하는 에러로 자바를 예로 들면 사용자가 이름을 입력하지 않았는데 그 값을 문자열 연산을 한다든가 할 때 발생하는 NullPointerException 같은 경우를 들 수 있습니다.논리적 에러 - 소스코드 레벨에서 발..
자바[Java]
2017. 12. 6. 00:17
[JAVA] 예외의 종류
자바 예외의 종류자바는 오류 및 오류를 클래스로 관리하며 당연히 최상위 클래스인 Object를 상속받게 됩니다.프로그램이 실행되다가 예기치 못한 상황이 발생시 JVM은 해당 상황에 맞는 예외를 만들어 던지게 됩니다.오류 중 최상위 클래스는 Throwable 클래스인데 이름에서도 알 수 있듯이 throw(던지다) 와 able(~ 할 수 있는) 즉 던질 수 있다는 뜻을 가지고 있습니다.따라서 Throwable을 상속받아야만 예외로서 던져질 수 있다는 것을 알 수 있습니다.예외 상속 계층도예외의 상속 계층도는 다음과 같으며 거의 대부분의 중요한 예외 및 에러는 java.lang 패키지에 포함되어 있습니다.자바의 오류는 에러와 예외로 나뉘며, 예외는 또다시 컴파일 예외와 런타임 예외로 나뉩니다.자바에서의 모든 ..
자바[Java]
2017. 11. 30. 23:43
[JAVA] Collection List, Map 합치는 방법
서로 다른 List, Map 병합 방법List와 Map 등 여러 개의 서로 다른 객체를 하나의 List 또는 Map으로 병합해야 할 때가 있습니다.Map 을 병합할 때는 다음과 같이 putAll()을 사용하면 됩니다. 사실 putAll은 여러 개의 key value를 동시에 추가하는 개념이지만 결국 두 개의 Map을 병합한다는 의미가 있습니다.import java.util.HashMap;import java.util.Map;public class CollectionMerge { public static void main(String[] args) { Map map1 = new HashMap(); map1.put("a", "a"); map1.put("b", "b"..
자바[Java]
2017. 11. 29. 01:35
[JAVA] JAVA 설치 및 환경 세팅하기
자바 설치 및 환경 세팅하기자바 프로그래밍을 시작하기 위해서는 자바 플랫폼을 설치하고 약간의 환경설정을 해주어야 합니다.또한 개발자인 저도 개인 장비를 포맷하거나 개발 환경이 바뀌어 다시 설치 및 세팅을 해주어야 할 때가 있습니다.여러번 설치해도 오래되면 잊어버리는 것이 개발환경 셋팅인 것 같습니다.여기서는 자바 표준 플랫폼인 Java SE(Standard Edition)를 설치할 것입니다.Java SE의 경우 방금 말했듯이 자바의 표준 플랫폼이며 실행 환경(JRE)과 개발환경(JDK)을 모두 포함하고 있습니다.또한 Java EE(Enterprise Edition)과 Java ME(Micro Edition)이 Java SE를 기반으로 하고 있으므로 가장 기본이 되는 플랫폼이라고 할 수 있습니다.1. 먼저..
자바[Java]
2017. 11. 24. 00:53
[Java] Collections.EMPTY_LIST
Collections.EMPTY_LIST 의 기능Collections 클래스에는 다음과 같이 EMPTY_LIST가 정의되어 있습니다.EMPTY_LIST는 public 상수이며 EmptyList 타입 입니다. 또한 정적 상수이기 때문에 싱글톤 객체로 이용 됩니다.EmptyList 클래스는 내부 클래스로 Collections 클래스 내부에 private 접근자로 정의되어 있기 때문에 상수 또는 emptyList() 메서드를 통해서만 접근이 가능합니다.Collections 클래스 일부 내용public static final List EMPTY_LIST = new EmptyList();public static final List emptyList() { return (List) EMPTY_LIST;}Em..
자바[Java]
2017. 11. 15. 08:00
[Java]객체의 동일성과 동등성 비교
객체의 동일성과 동등성객체 비교에 있어서 동일성(identity) 비교와 동등성(equality) 비교가 있습니다.동일성 비교의 경우 다음과 Object a 와 Object b가 있을 경우 정말 같은 객체인지 비교하는 경우를 말하며 == 연산으로 비교하는 경우입니다.Integer a = new Integer(3);Integer b = a;System.out.println(a); //3System.out.println(b); //3System.out.println(a == b); //동일성 비교 trueSystem.out.println(a.equals(b)); //동등성 비교 true즉 참조변수 a와 b가 같은 객체를 참조하고 있는지 비교합니다.동일성 비교가 참인 경우 당연히 같은 객체이므로 동등성 비교도..