프로그래밍에서 함수에 값을 전달하는 방식에는 Call by Value(값에 의한 호출)와 Call by Reference(참조에 의한 호출)가 있습니다. Java는 항상 Call by Value 방식을 사용합니다. 하지만 객체를 전달할 때는 참조가 전달되는 것처럼 보이기 때문에 혼동이 생길 수 있습니다. 이 글에서는 Java에서 Call by Value가 어떻게 동작하는지, 그리고 객체를 전달할 때 발생하는 개념적 차이를 코드와 함께 살펴보겠습니다.1. Call by Value (값에 의한 호출)Call by Value는 메서드에 인수를 전달할 때, 원본 값을 복사하여 전달하는 방식입니다. 즉, 메서드 내부에서 값이 변경되더라도 원본 변수에는 영향을 미치지 않습니다.기본형 데이터 타입에서 Call by ..
1. 빌더 패턴이란?빌더 패턴(Builder Pattern)은 복잡한 객체를 단계적으로 생성할 수 있도록 도와주는 생성 패턴(Creational Pattern)의 하나입니다. 객체의 생성 과정이 복잡하거나, 생성자에 많은 매개변수가 필요할 때 사용됩니다.2. 빌더 패턴이 필요한 이유2.1 생성자 문제 해결생성자에 많은 매개변수가 필요한 경우, 코드의 가독성이 떨어지고 유지보수가 어려워집니다.예제:public class Product { private String name; private int price; private String manufacturer; private String category; public Product(String name, int price, ..
BufferedReader란?BufferedReader는 버퍼링된 문자 입력 스트림으로, 데이터를 한 번에 여러 문자씩 읽어들이는 방식으로 입력 성능을 최적화하는 클래스입니다. BufferedReader를 사용하면 반복적인 I/O 작업을 줄여 효율적인 입력 처리가 가능하고, 대량의 데이터를 처리할 때 유리합니다. BufferedReader 사용법BufferedReader는 보통 InputStreamReader와 함께 사용되며, 이를 통해 표준 입력(콘솔 입력)을 처리합니다.BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 1. System.in: 표준 입력 스트림System.in은 자바의 표준 입력 스트림으로, 콘솔에서 사..
1. Arrays.sort()대상: int[], double[], String[] 같은 기본 배열과 Object[] 배열내부 구현:기본형 배열(int[], double[] 등): Dual-Pivot Quicksort (최적화된 퀵 정렬)객체 배열(Object[]): Timsort (합병 정렬과 삽입 정렬의 조합)특징:Comparable을 구현한 객체 배열 정렬 가능Comparator를 사용할 수도 있음기본형 배열은 Comparator를 사용할 수 없음📌 예제 1: 기본형 배열 정렬import java.util.Arrays;public class Main { public static void main(String[] args) { int[] numbers = {5, 3, 8, 1, 2}..
Java 8부터 인터페이스에 default 메서드를 정의할 수 있는 기능이 추가되었습니다. 기존에는 인터페이스가 오직 메서드의 시그니처만 정의하고, 실제 구현은 해당 인터페이스를 구현하는 클래스에서 제공해야 했습니다. 그러나 default 메서드를 사용하면 인터페이스에서도 기본적인 메서드를 구현할 수 있습니다.1. Default 메서드란?default 메서드는 인터페이스에서 메서드의 기본 구현을 제공하는 기능입니다. default 키워드를 사용하여 선언하며, 이를 구현하는 클래스는 해당 메서드를 별도로 재정의하지 않아도 사용할 수 있습니다.기본 문법interface MyInterface { default void sayHello() { System.out.println("Hello fr..
1. DAO, DTO, VO란?1.1 DAO (Data Access Object)DAO는 데이터베이스와 직접적으로 상호작용하는 객체로, 데이터베이스의 CRUD(Create, Read, Update, Delete) 작업을 수행합니다. DAO는 주로 SQL 쿼리를 실행하고 결과를 반환하는 역할을 합니다.특징:데이터베이스와 직접적인 연결을 담당SQL을 실행하여 데이터를 조회하거나 저장서비스 레이어에서 호출되어 데이터를 주고받음일반적으로 인터페이스와 구현 클래스로 분리하여 사용DAO 예제 (Spring Boot + MyBatis)@Mapperpublic interface UserDAO { @Select("SELECT * FROM users WHERE id = #{id}") UserVO getUserB..