equals()를 재정의 하면, hashcode()도 재정의 해야 하는 이유는 무엇일까? 각각 메서드의 역할을 중심으로 알아보려 해요.두 객체가 같다는 의미는 두 가지로 해석할 수 있어요. 두 객체가 동일하다는 것은 두 객체의 메모리 주소값이 같은지를 '=='연산자를
enum은 무엇이고 왜 사용할까요?enum을 이해해보고enum의 내부 동작원리를 메모리 관점으로공부하며 진행해 볼게요 !!enum은 상수들의 집합이에요. enum을 설명할 때 대표적인 예시로 요일이 있어요. "월, 화, 수, 목, 금, 토, 일"처럼 한정된 데이터를 계
다음과 같은 질문 두개를 던져 보았어요.예외 및 예외처리가 무엇일까?왜 필요할까?자바의 Exception을 이해하기 위해 위의 두 질문부터 시작해 볼게요.예외는 프로그램 실행 중 비정상적인 상황을 말해요. 이는 프로그램이 예상하지 못한 입력이나 작업을 만났을 때 발생해
제네릭이란 무엇이며, 왜 사용할까요? 또한 제네릭을 사용하여 어떤 이점을 얻을 수 있나요?제네릭은 클래스, 인터페이스 및 메서드를 정의할 때, 실제 사용될 타입을 타입 파라미터로 받아 사용하는 방식이에요. 관례적으로 타입파라미터는 Type의 T와 Element의 E 등
스레드는 왜 만들까?자바는 어떻게 스레드를 활용할 수 있게 해주었을까?동기화는 어떻게 처리할까?Java에서 Thread는 하나의 프로세스 내에서 실행되는 하나의 실행 흐름을 나타내며, 동시성을 제공하기 위해 사용해요. 새로운 스레드를 만들기 위해서는 Thread 클래스
자바에서 스레드(thread)마다 독립적인 변수를 가질 수 있게 해주는 스레드 로컬(thread local)은 무엇이며 사용할 때 주의사항은 무엇일까?Thread 클래스 내부에 ThreadLocalMap을 맴버 변수로 갖고 있어요.ThreadLocal 객체와 스레드 간
객체지향 프로그래밍을 설계 할 때, 상속과 합성이 있어요. 대부분 상속 보다는 합성을 사용하는 것을 권장해요. 왜 합성을 선호하는 지에 대해 알아보려고 해요.객체지향의 사실과 오해, 오브젝트 책을 참고하여 글을 작성했어요 🥸개발을 할 때, 많은 것을 고려하겠지만 코드
Java 8 이상에서 제공되는 Optional 클래스는 값이 존재하지 않을 수 있는 상황에서 더 명확하고 안전한 코드를 작성하기 위한 도구로 널(Null)을 다루는 데 유용해요. Optional 클래스의 orElse() 메서드와 orElseGet() 메서드는 두 가지
Que를 사용할 때 자주 사용하는 구현체로 ArrayDeque와 LinkedList를 사용하는데 언제 어떻게 사용하면 좋을까? 우선 Que의 특징 중 하나는 선입선출 특징을 갖고 있어요.Queue 대기열에 데이터를 추가하는 것을 Enqueue, 데이터를 꺼내는 것을 D
Java 8부터 람다 표현식(Lambda Expression)은 자바의 중요한 기능 중 하나로 자리 잡았어요. 람다를 사용함으로써 개발자는 보다 간결하고 명확한 코드를 작성할 수 있게 되었죠. 하지만 람다 표현식의 도입은 단지 문법적인 단순화를 넘어서, 함수형 프로그래