Java 6

Atomic 자료형

비동기 처리를 할 때, 기본 자료형의 경우 데이터가 꼬일 가능성이 있다. 이를 막기 위해서 lock을 거는 등 별도의 처리를 해주어야 하는데, Java 에서는 Atomic 자료형을 제공해 주어, 멀티스레드 환경에서 안전하게 값을 읽고 쓸 수 있다. 제공하는 메서드를 보면, get() — 값 읽기set() — 값 쓰기getAndIncrement()incrementAndGet()addAndGet(n)compareAndSet(expect, update)동시성 문제를 해결하는 주요 기능이다.현재값이 내가 예상한 값과 같으면 새값으로 바꾸고, 그렇지 않으면 아무것도 하지 않는다.예를들어, 내가 알고 있던 값이 100 이고, 이것을 101로 바꾸려 할때, 누군가 102로 바꿨다면 아무것도 하지 않고, 100 이..

Java 2025.12.12

Optional.ofNullable 로 null-safe 처리 하기

단순히 if 문으로 null 체크를 할 수도 있다. 그리고 사실 이 방법을 더 선호 하는 편이다. 그러나 java 에서는 체이닝이 기본으로 사용하고 있고, 가독성 보다는 코드를 줄이는걸 좋아 하는거 같다. Optional 이라고 하는 클래스를 제공하여, 이를 이용하여서 null일 경우 하단의 람다식을 수행하지 않고, null이 아닐 경우만 수행하도록할 수 있다. Optional 에서 제공하는 메소드 중 이 글의 주제와 맞는 2개의 메소드를 일단 간략히 보자면, 아래와 같다Optional.of()이 안에 들어가는 인자값은 반드시 null 이 아니어야 한다. null 이면 null point exception이 발생한다.Optional.ofNullable()이 안에 들어 가는 인자값은 null 이어도 된..

Java 2025.11.04

파일 쓰고, 읽기 예제

Buffered Stream과 Object Stream을 이용한 파일 쓰기, 읽기 예제를 정리해 본다. 막상 매변 쓸려면 헷갈려서 미리 정리해 놓는다. 파일 쓰기.....public static void save(byte[] data, Path path) { try (ObjectOutputStream oos = new ObjectOutputStream( new BufferedOutputStream(Files.newOutputStream(path)))) { oos.writeObject(data); // byte[] 자체를 직렬화하여 저장 oos.flush(); } catch (IOException e) { throw new RuntimeE..

Java 2025.10.02

Checked, Unchecked Exception

보통 C# 에서는 그냥 Exception 하나로 퉁 치는 경우가 많다. 물론 각 속성별로 쪼개져 있기는 하지만, 그걸 일일히 다루지는 않는다. 왜냐하면 자바 처럼 Checked, Unchecked 개념 없이 모두 Exception을 상속 받았기 때문이다. 그러나 Java 에서는 좀 다르다. 두개의 타입으로 나눠지는데, Checked, Unchecked Exception으로 나뉜다. Checked Exception컴파일 시점에서 반드시 try catch나 클래스에서 throws 로 선언이 되어 있어야 한다. 개발자가 인지하고 있다는 가정하게 대응을 요구하는 경우이다. IOException, SQLException, ClassNotFoundException등 이 여기에 해당된다.IOExceptionFi..

Java 2025.10.01

Stream API

List 같은 자료형에서, 특정 조건에 해당하는 항목들을 필터링 한다든지, Map 자료형에서 value 에 해당하는 요소들만 모아서 List로 반환한다든지 하는 등 C#의 Linq 쿼리의 where 조건이나 select 조건 등과 유사한 연산을 하는 API 이다. 다만, Linq 쿼리는 쿼리문과 유사하게 개발자가 작성을 해야 한다면, Java의 Stream API는 체이닝을 통해 이미 기본으로 제공하는 함수들을 호출한다는 점에서 다르다. 1. Stream() 사용법List 자료형에서는 변수명.stream() 메소드 호출을 통해 후속 함수들을 호출함으로서 사용한다.Map 자료형에서는 entrySet().stream() 메소드 호출을 통해 후속 메소드는 List와 동일한 형식으로 호출함으로서 사용한다...

Java 2025.09.10

Java Collections Framework (List, Map...)

자바에서도 C# 의 List 나 Dictionary 같은 자료형들이 존재한다. (C# 에 없는 자료형들도 있다) 이 내용을 정리하고자 한다. 일단 크게, Collection 계열과 Map 계열로 나누어 진다. C#과의 차이점이라면, C# 에서는 List 변수명 = new List(); 처럼, 생성시 자료형이 일치하나, Java 에서는 그렇지 않다는 점이다. 정의 할 때에는 부모 자료형을 쓰고, 생성할때 자식 자료형으로 구체화 한다. 또한, Collections 항목을 사용할 때 에는 기본 자료형인 int, double 등을 쓸 수 없고, Integer, Double 등 null 이 포함될 수 있는 자료형을 사용해야 한다. 1. Collection 계열List 계열과 Set 계열로 나누어 진다. List..

Java 2025.09.10