Java 13

JSONObject

JSONObject는 Java에서 JSON 데이터를 표현하고 다루기 위한 객체입니다.JSON은 데이터를 키-값 쌍으로 표현하는 형식이며, JSONObject를 사용하면 Java 코드에서 이 구조를 손쉽게 만들고 읽을 수 있습니다. 주요 기능 문자열로 된 JSON을 파싱하여 객체처럼 다룸키-값 형태의 JSON 데이터 생성값을 가져오거나 수정, 삭제 가능간단한 JSON 응답 구성이나 디버깅용으로 유용 내부 구조JSONObject는 내부적으로 데이터를 Map 구조로 저장하며,문자열, 숫자, boolean, 배열, 중첩된 JSONObject 등 다양한 값을 저장할 수 있습니다.

Java 2025.05.19

[Java] Enum

Enum Type(열거형 타입)이란 무엇인가요? 언제 사용해야 하나요?Enum(열거형 타입)**은 서로 관련된 상수들의 집합을 정의하는 특별한 데이터 타입입니다. Java에서 Enum은 특정한 이름을 가진 고정된 상수 집합을 정의할 때 사용되며, 각 상수는 Enum 타입의 인스턴스로 표현됩니다. 사용 시점고정된 상수 집합: 예를 들어 요일, 계절, 방향(북, 남, 동, 서) 등과 같은 고정된 상수 집합을 정의할 때 사용합니다.타입 안전성 보장: Enum을 사용하면 지정된 값들만 허용되므로, 잘못된 값이 사용되는 것을 방지할 수 있습니다.가독성과 유지보수성: 의미 있는 이름을 가진 상수를 사용하므로, 코드의 가독성을 높이고, 유지보수도 용이하게 만듭니다.Enum의 장점은 무엇이며, 기존의 정수 상수와 비교..

Java 2024.09.11

[Java] 제너릭(Generics)

제네릭(Generics)**은 Java에서 다양한 타입의 객체를 다룰 수 있는 클래스, 인터페이스, 메서드를 정의할 수 있도록 해주는 기능입니다. 제네릭은 컴파일 시 타입을 지정하고 검사할 수 있게 하여 타입 안정성을 보장하고, 형변환의 필요성을 줄여 코드의 가독성과 유지보수성을 향상시킵니다. 제네릭이 해결한 문제타입 안정성 부족: Java 5 이전에는 컬렉션과 같은 데이터 구조에 다양한 타입의 객체를 저장할 수 있었지만, 이를 다시 사용할 때마다 형변환(casting)을 해야 했습니다. 이 과정에서 런타임 시점에 ClassCastException이 발생할 가능성이 있었습니다.형변환의 불편함: 매번 객체를 사용할 때마다 수동으로 형변환을 해야 하므로 코드가 복잡해지고, 실수를 유발할 가능성이 높아졌습니다..

Java 2024.09.11

전략패턴으로 코드 개선

비즈니스 로직의 복잡성으로 인한 코드 구현의 어려웠습니다. 주문 처리를 위한 기존 코드는 여러 가지 비즈니스 로직을 하나의 메서드에 모두 포함하고 있었습니다.예를 들어, 제품 정보를 캐싱하기 위한 Redis 조회 및 저장 로직, 주문 상품 생성, 주문 저장, 배송 정보 생성 및 저장, 재고 차감, 매출 금액 업데이트 등 다양한 비즈니스 로직이 하나의 order 메서드 내에 혼재되어 있었습니다. 이로 인해 다음과 같은 문제가 발생했습니다: 코드 가독성 저하: 여러 가지 서로 다른 로직이 하나의 메서드에 모여 있어 코드의 흐름을 한눈에 파악하기 어려웠습니다. 또한, 각 로직 간의 의존 관계와 순서를 명확하게 이해하기 힘들어, 코드를 수정하거나 유지보수할 때 어려움이 있었습니다. 확장성의 제한: 새로운 비즈니..

Java 2024.09.04

[Java] - Thread

Java의 Thread는 멀티쓰레딩 프로그래밍을 지원하기 위한 Java 언어의 기능입니다.쓰레드는 프로세스 내에서 실행되는 작은 실행 단위로, 여러 쓰레드가 동시에 실행됨으로써 멀티태스킹을 구현할 수 있습니다 쓰레드의 기본 개념프로세스(Process): 실행 중인 프로그램을 의미하며, 각 프로세스는 독립적인 메모리 공간을 갖습니다.쓰레드(Thread): 프로세스 내에서 실제 작업을 수행하는 실행 단위입니다. 하나의 프로세스는 여러 쓰레드를 가질 수 있으며, 메모리를 공유합니다 멀티 스레드의 활용대용량 데이터의 분할 병렬 처리애플리케이션의 UI 네트워크 통신다수의 클라이언트 요청을 받는 서버 장점시스템 자원 소모 감소프로세스를 생성하여 자원을 할당하는 요청이 줄어들기 때문에 자원을 효율적으로 관리할 수 있..

Java 2024.08.29

[Java] StringBuilder

자바에서의 String 클래스는 불변한 특성을 가지고 있다. 이 뜻은 한 번 생성된 문자열은 변경할 수 없다는 것을 말한다.따라서 문자열을 변경할 때마다 새로운 문자열이 생성되어 메모리에 할당되는데 이는 문장려 조작이 빈번한 경우에는 성능에 부정적인 영향을 미친다. 그렇지만 StringBuilder는 String과 다르게 값이 변할 수 있다. StringBuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적다.따라서 긴 문자열을 더하는 상황이 발생할 경우 StringBuffer 또는 StringBuilder를 적극적으로 사용하는 게 좋다. 생성자StringBuilder sb = new Strin..

Java 2024.08.19

[Java] 문자열 내장 메서드

String 자료형의 내장 메서드 중에서 자주 사용하는 것이 있습니다. 1.equalsequals 메서드는 문자열 2개가 같은지를 비교하여 결과값을 리턴합니다. String a = "hello";String b = "java";String c = "hello"; System.out.println(a.equals(b)) ; // false 출력System.out.println(a.equals(c)) ; // true 출력 2. indexofindexOf는 문자열에서 특정 문자열이 시작되는 위치(인덱스값)를 리턴합니다.문자열 a에서 Java가 시작되는 위치를 알고 싶다면 indexOf를 사용하여 위치를 알 수 있습니다. String a = "Hello Java";System.out.println(a.inde..

Java 2024.08.16

[Java] String

자바에서는 문자열을 위한 String이라는 클래스를 별도로 제공합니다.문자열이란 다음처럼 문자로 구성된 문장을 뜻합니다."Happy Java" "a" "123" 문자열을 표현할 때는 가급적이면 첫 번째 방식, 즉 리터럴(literal) 표기 방식을 사용하는 것이 좋다.String a = "Happy java"  이것이 리터럴 표기방식인데  고정된 값을 그대로 대입하는 방법을 말한다 자바에서 String은 클래스이기때문에 자바의 기본 자료형에 속하지 않는다. String 의 특징은 불변성 : 자바에서 String은 불변하는 특징이 있다객체 : String은 객체이다 String은 불변 String 객체의 값은 변경할 수 없다.불변으로 설계된 이유 JVM(자바 가상 머신)에서는 따로 String Consta..

Java 2024.08.16

[Java] 동일성(Identity)과 동등성(Equality)

두 객체가 같은 객체인지  판별해야할 때 사용하는 방법은 두 가지가 있습니다.   Object.equals , == 동일성 - Identical동일성은 두 비교대상이 바라보고 있는 실제 인스턴스 객체의 메모리 주소 가 같음을 의미하는 것 입니다. 동일성에 대한 비교는 == 비교연산자로 확인할 수 있게됩니다. 동등성(equality)동등성은 비교대상의 두 객체가 논리적으로 동일한 값을 저장 및 표현하고 있는지를 의미하는 것입니다.메모리 주소값을 비교하는 것이 아니라 "논리적으로 동일한지"를 비교하는 것입니다.

Java 2024.07.25