Java 18

[Java] String, StringBuffer, StringBuilder

1. String특징불변(Immutable) 객체한 번 생성된 String인스턴스의 내용은 변경할 수 없다.str += "a"처럼 보이는 연산도 사실은 새로운 String객체를 만들어 참조를 바꾸는 것이다.final 클래스String 클래스는 final이라 상속이 불가능하다.이는 불변성과 보안(예: 클래스 로딩, 파일 경로, 네트워크 주소 등에서의 오염 방지)에 도움을 준다.값 타입처럼 동작하는 참조 타입String 참조 타입이지만, equals 비교, 불변성 덕분에 값 타입처럼 사용하는 경우가 많다.==은 참조 비교, equals()는 내용 비교라는 점을 항상 구분해야 한다.단점자바의 String은 불변 객체라서, 내용 변경 시 변수에 저장된 값만 바뀌는 것이 아니다.기존 문자열을 수정하는 대신, 변경..

Java 2025.12.12

[Java] Framework, Library

1. Framework사전 의미(건물 등의) 뼈대[골조](판단·결정 등을 위한) 틀체제, 체계출처: 네이버 백과사전프레임워크는 개발 방식의 틀을 제공하며, 제어 흐름을 프레임워크가 주도한다(IoC).개발자는 미리 정해진 구조에 맞춰 코드를 작성하며, 실행 과정에서 프레임워크가 해당 코드를 호출한다.Spring Framework는 전형적인 예로, IoC Container가 객체 생성·의존성 주입·요청 흐름을 모두 관리한다. 프레임워크의 강제예시(Spring)폴더 구조 강제src/main/javasrc/main/resourcessrc/main/test 등어노테이션 규칙 강제@Controller, @Service, @Repository, @Component 등을 지정해야 IoC Container가 자동으로 B..

Java 2025.12.11

[Java] Spring의 탄생 배경

1. EJBSpring Framework가 나오기 전, Java진영에선 EJB(Enterprise JavaBeans)개발 환경으로 개발하였다.1-1. EJB 등장 배경1990년대 말, Java가 기업용 서버 애플리케이션 개발에 널리 사용되기 시작하면서, 다음과 같은 요구사항이 증가하였다.C++로 구현된 복잡한 분산 시스템 기술들을 대체하고 싶다.트랜잭션 처리를 일관되게 관리하고 싶다.분산 시스템 간의 통신을 쉽게 처리하고 싶다.인증 및 권한 제어를 코드 외부에서 처리하고 싶다.재사용 가능하고 확장 가능한 비즈니스 컴포넌트가 필요하다.1-2. EJB 장점기능의 표준화 : 트랜잭션, 보안, 분산 처리 등을 자바 표준으로 일관되게 제공컨테이너 관리의 이점 : 스레드 관리, 자원 할당 등을 직접 처리하지 않아도..

Java 2025.12.11

[Java] HashSet

1. HashSet이란?Set 인터페이스를 구현한 컬렉션으로, 중복을 허용하지 않는다.내부적으로 HashMap을 사용하여 데이터를 저장한다.해시 충돌(Hash Collision)이 거의 없다면 매우 빠른 성능을 낸다.평균적으로 add, remove, contains 연산이 O(1).해시 충돌이 많이 발생하면 동일 버킷에 값들이 모이므로최악의 경우 O(n)까지 성능이 떨어질 수 있다.2. Hash Table 동작원리Key(키)가 입력된다.Hash 함수가 Key를 정수(Hash Code)로 변환한다.변환된 정수를 Hash Table의 크기(Table의 row 수)로 나눈 나머지를 구한다. → indexindex = hashCode % tableSize이 index를 이용해 해당 버킷(bucket)에 데이터를..

Java 2025.12.07

[Java] Stream - map과 flatMap

1. Map 이란?map은 자바의 stream객체에서만 사용할 수 있는 중간 연산 메서드이다.stream은 각 요소를 순차적으로 접근하며, map은 각 요소마다 1:1로 함수형 인터페이스 Function에 정의한 함수를 적용하여 return한다.Function란: 매개변수 1개(T 타입), 리턴 1개(R 타입)의 함수형 인터페이스이다.map이 반환하는 것은 새로운 Stream이 되며, 다음 연산으로 사용된다.아래는 예시 코드이다.List list = List.of("apple", "banana", "cat");// 람다식List intList1 = list.stream() .map(str -> str.length()) .toList();// 메서드 참조형식List intList2..

Java 2025.11.26

[Java] 단일 책임 원칙(SRP)과 개방-폐쇄 원칙(OCP)

1. 단일 책임 원칙 - SRP (Single Responsibility Principle)객체는 단 하나의 책임만 가져야 한다는 원칙이다. 여기서 책임이란 기능을 말한다.즉 하나의 클래스는 한 가지의 기능만을 수행해야한다 실생활 예시를 들어보자.단일 책임 원칙에 맞지 않은 도구는 대표적으로 멀티툴이 있다. 하나의 도구로 칼,가위,니퍼,손톱깍이 등등 많은 기능들이 한 가지 도구에 기능이 집합되어있다.이것은 코드적으로 보았을 때 유지보수가 어려운 코드로 비교될 수 있다.코드적으로 좋은 상황으로 만든다면 칼,가위,니퍼,손톱깍이 등등을 모두 따로 만드는 것이 아주 이상적일 것이다.실생활 예시를 들어보았으니 코드 예시로 넘어가보자.class User { private String name; priv..

Java 2025.11.25

[Java] 싱글톤 패턴

1. 싱글톤이란?특정 클래스의 인스턴스(객체)가 애플리케이션 전체에서 오직 하나만 생성되도록 보장하는 디자인 패턴.생성자를 private으로 선언해서 외부에서 객체를 직접 만들 수 없도록 막음클래스 내에 static 변수로 유일 객체를 저장함static 메서드를 통해 전역에서 동일 객체에 접근함 싱글톤의 목적데이터베이스 커넥션 풀, 설정 객체 등 시스템 자원을 공유해야 하는 상황에서 객체가 여러 번 생성되는 것을 방지하고 하나만 생성해 메모리 낭비를 막음전역적으로 일관된 객체를 사용할 수 있음 코드로 같이 알아보자아래와 같은 싱글톤 패턴의 예시 코드가 있다. 하나 씩 같이 보자class Singleton { private static Singleton instance = new Singleton()..

Java 2025.11.18

[Java/Set] HashSet, LinkedHashSet, TreeSet

1. SET자료의 중복을 허용하지 않는다.- 동일 값을 추가시 새로운 값을 무시하고 기존 값을 유지한다.Set set = Set.of(10, 30, 15, 40, 25, 55, 10, 30);System.out.println(set);// 결과/*Exception in thread "main" java.lang.IllegalArgumentException: duplicate element: 10 at java.base/java.util.ImmutableCollections$SetN.(ImmutableCollections.java:918) at java.base/java.util.Set.of(Set.java:612) at Main.main(Main.java:5)*/IllegalArgumen..

Java 2025.10.21