본문 바로가기

반응형

프로그래밍언어/JAVA

(61)
[JAVA] try-with-resources statement try-with-resources statement try-with-resources 구문은 하나 또는 복수 개의 자원을 선언하는 try 문이다. 각 자원들은 사용이 끝나면 close 되어야 하는데, try-with-resources 구문은 try 문을 탈출할 때 선언된 자원들을 모두 닫아준다. 기존의 try 문에서는 catch 블럭이나 finally 블럭 등에서 자원을 닫아주었어야 하는데, 이를 자동으로 처리해주기 때문에 편리하다. 자원으로 사용할 수 있는 객체들은 java.lang.AutoCloseable 인터페이스의 구현체에 한정된다. 기존의 try-catch 문과 동일하게 catch 블럭이나 finally 블럭을 사용할 수 있다. // 기존의 try-catch 문 // finally 블럭에서 자원..
[JAVA] Serialization & Deserialization 1. Serialization & Deserialization 자바 직렬화, Serialization 이란 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술이다. 이와 반대되는 기술로 바이트로 변환된 데이터를 다시 객체로 변환하는 기술을 역직렬화, Deserialization 이 있다. 시스템적으로 이야기하자면 JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술과 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태를 같이 이야기한다. - Serialization 자바에서 직렬화는 객체를 직렬화하여 전송 ..
[JAVA] java.util 패키지 1. java.util.Objects Object 클래스의 보조 클래스로 Math 클래스처럼 모든 메서드가 static이다. 객체의 비교나 null check 에 유용하다. // 객체가 null 인지 아닌지 확인하여 결과를 반환 static boolean isNull(Object obj) static boolean nonNull(Object obj) // 해당 객체가 null 인지 아닌지 판단하여 null 인 경우에 NullPointerException 을 발생시킨다. static T requireNonNull(T obj) static T requireNonNull(T obj, String message) static T requireNonNull(T obj, Supplier messageSupplier..
[JAVA] java.lang java.lang 패키지는 자바 프로그래밍에서 가장 기본이 되는 클래스들을 포함하고 있다. Object나 String 과 같은 클래스들을 포함하고 있는데, 이 클래스들은 import 없이도 사용할 수 있다. 1. Object 클래스 Object 클래스는 자바의 모든 클래스의 최고 조상 클래스이다. 그렇기 때문에 Object 클래스의 멤버들은 모든 클래스에서 바로 사용이 가능하다. 메서드 설명 protected Object clone() 객체 자신의 복사본을 반환한다. Object 클래스에 정의된 clone() 메서드는 단순히 인스턴스 변수의 값을 복사하기 때문에 참조 변수 타입의 인스턴스 변수가 정의되어 있는 클래스는 완전한 복사가 이루어지지 않는다. 그렇기 때문에 clone으로 복사한 객체의 수정이 원..
[JAVA] 예외처리 (Exception handling) 1. 프로그램 오류 프로그램 실행 중에 어떠한 원인에 의해 프로그램이 오작동 하거나 비정상적으로 종료되는 경우가 있는데, 이러한 경우를 프로그램 에러 또는 오류라고 한다. 에러는 발생 시점에 따라 '컴파일 에러'와 '런타임 에러'로 나눌 수 있다. 이외에도 컴파일 에러나 런타임 에러와는 조금 달리 정상적으로 실행되지만 의도와 다른 동작을 보이는 '논리적 에러'도 있다. 컴파일 에러의 경우 프로그램이 실행되기 전에 컴파일러를 통해서 오류를 잡을 수 있지만, 런타임 에러의 경우는 실행되기 전에는 알 수 없다. 이러한 런타임 에러를 방지하기 위해서는 프로그램의 실행 도중 발생할 수 있는 모든 경우의 수를 고려하여 대비를 해야한다. 자바에서는 런타임에 발생할 수 있는 프로그램 오류를 에러(error)와 예외(e..
[JAVA] 내부 클래스 (Inner class) 1. 내부클래스 내부클래스는 클래스 내부에 선언된 클래스이다. 서로간에 긴밀한 관계를 가지는 클래스들에 대해서 한 클래스 내부에 다른 클래스를 선언함으로 내부에서 쉽게 접근하고, 외부에서는 해당 클래스에 대한 불필요한 접근을 감춤으로서 코드의 복잡성을 줄일 수 있다. class A { // 외부 클래스 A의 내부에 클래스 B를 선언한다. class B { ... } } 2. 내부클래스의 종류와 특징 내부클래스의 종류는 변수의 선언위치에 따른 종류와 같다. 변수가 선언되는 위치에 따라 인스턴스 변수, 클래스 변수 (static 변수), 지역변수로 구분되는 것과 같이 내부클래스도 다음과 같이 구분된다. 내부 클래스 설명 인스턴스 클래스 외부 클래스의 멤버변수 선언 위치에 선언하며, 외부 클래스의 인스턴스 멤..
[JAVA] 인터페이스 (Interface) 1. 인터페이스 인터페이스는 일종의 추상클래스이다. 추상클래스와 같이 추상메서드를 가지고 있지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 구현부를 가진 일반 메서드는 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있다. 추상클래스가 부분적으로 미완성 된 추상메서드를 가지고 있는 미완성 설계도라면, 인터페이스는 아무런 구현이 되어있지 않은 기본 설계도라고 할 수 있다. 아무 로직을 가지고 있지 않은 상태이기 때문에 그 자체로는 클래스의 역할을 할 수 없으나 다른 클래스를 작성하는데 밑바탕이 되는 설계 역할을 할 수 있다. 2. 인터페이스 작성 인터페이스는 class가 아닌 'interface' 키워드를 통해 선언한다. 그리고 클래스와 같이 접근제어자로 public 또는 defaul..
[JAVA] 추상클래스 (abstract class) 1. 추상클래스 추상클래스는 추상메서드를 포함하고 있는 클래스이다. 추상메서드는 메서드의 내용이 구현되어 있지 않기 때문에 상속을 통해서 메서드를 구현해 주어야 한다. 그렇기 때문에 추상클래스를 통해서 인스턴스를 생성할 수 없다. 추상클래스 자체로는 인스턴스를 생성하는 등의 클래스로서의 역할을 다 하지 못하지만, 새로운 클래스를 작성하는데 있어서 설계의 기반이 되는 조상 클래스로서의 역할을 할 수 있다. 추상클래스는 클래스 선언부에 abstract 키워드를 붙여서 선언한다. 이 키워드를 통해서 해당 클래스의 추상메서드를 구현해주어야 한다는 것을 알 수 있다. abstract class ClassName { ... } 추상클래스는 추상메서드를 포함할 수 있다는 것을 제외하고는 일반 클래스와 동일하다. 생성..

반응형