Back_End/JAVA 33

자바 컬렉션 (Java Collections)

1. 컬렉션의 기본 구성자바 컬렉션은 크게 세 가지 주요 인터페이스로 나뉩니다:List: 순서가 있는 데이터의 집합. 중복 요소를 허용.Set: 중복을 허용하지 않는 데이터의 집합.Map: 키-값 쌍으로 구성된 데이터의 집합. 키는 중복 불가, 값은 중복 허용.아래는 주요 인터페이스와 그 하위 구현 클래스들입니다:주요 인터페이스 및 구현 클래스 인터페이스 구현 클래스 ListArrayList, LinkedList, VectorSetHashSet, LinkedHashSet, TreeSetMapHashMap, LinkedHashMap, TreeMap2. List (리스트)"순서를 유지하며, 중복을 허용하는 데이터 집합."ArrayList특징: 배열 기반, 인덱스로 빠르게 접근 가능.단점: 삽입/삭제 시 성..

Back_End/JAVA 2024.12.11

추상 클래스와 인터페이스

1. 추상 클래스 (Abstract Class) "공통적인 특징과 동작을 정의하며, 일부는 하위 클래스에서 반드시 구현하도록 강제한다."특징추상 메서드(Abstract Method): 구현되지 않은 메서드를 포함할 수 있습니다.일반 메서드: 구현된 메서드를 포함할 수 있습니다.상속을 통해서만 사용할 수 있습니다. 직접 객체를 생성할 수 없습니다.공통된 속성이나 동작을 여러 하위 클래스에서 재사용할 때 유용합니다.코드 예시public abstract class Animal { private String name; public Animal(String name) { this.name = name; } public String getName() { return n..

Back_End/JAVA 2024.12.11

객체지향 설계의 5원칙 (SOLID)

1. 단일 책임 원칙 (Single Responsibility Principle, SRP) "클래스는 단 하나의 책임만 가져야 한다."하나의 클래스는 하나의 기능이나 역할만 담당해야 합니다.클래스가 여러 책임을 가지게 되면, 하나의 변경이 다른 기능에 영향을 미칠 수 있습니다.예시:위 코드에서 calculateTotal과 printInvoice는 다른 책임을 가지므로, 별도의 클래스로 분리하는 것이 좋습니다. public class Invoice { public void calculateTotal() { /* 총액 계산 */ } public void printInvoice() { /* 청구서 출력 */ }}2. 개방-폐쇄 원칙 (Open-Closed Principle, OC..

Back_End/JAVA 2024.12.11

Java에서 equals()와 hashCode() 메서드 오버라이딩의 중요성

equals()와 hashCode()란 무엇인가? 🤔equals() 메서드: 두 객체가 논리적으로 동등한지 비교합니다. 기본적으로 Object 클래스에서 제공하는 equals()는 두 객체의 참조값(메모리 주소)을 비교합니다.hashCode() 메서드: 객체를 식별하는 정수 값을 반환합니다. 이 값은 해시 기반 컬렉션(예: HashMap, HashSet)에서 객체를 저장하고 검색하는 데 사용됩니다.두 메서드의 관계equals()와 hashCode()는 다음과 같은 규칙에 따라 동작해야 합니다:equals()가 true를 반환하는 두 객체는 동일한 hashCode() 값을 가져야 합니다.hashCode() 값이 같은 객체가 반드시 equals()에서 true를 반환할 필요는 없습니다.이 규칙을 지키지 않..

Back_End/JAVA 2024.12.06

ORM(Object-Relational Mapping) 이란?

ORM(Object-Relational Mapping)은 객체와 데이터베이스 간의 관계를 매핑하여 데이터베이스 조작을 객체 지향적으로 처리할 수 있게 해주는 기술입니다. 간단히 말해, SQL 쿼리를 직접 작성하지 않고도 데이터베이스와 상호작용할 수 있도록 도와주는 도구라고 볼 수 있습니다. 왜 ORM을 사용할까? 🤔1. 생산성 향상SQL을 작성하는 대신 프로그래밍 언어의 메서드 호출을 통해 데이터베이스를 조작할 수 있습니다. 이는 코드를 작성하는 시간을 단축시키고, 유지보수를 더 쉽게 만들어 줍니다.2. 가독성 증가SQL 쿼리를 코드 안에 직접 작성하면 코드가 지저분해질 수 있습니다. ORM을 사용하면 객체 지향적인 코드로 데이터를 처리할 수 있어 가독성이 높아집니다.3. 데이터베이스 독립성ORM은 다..

Back_End/JAVA 2024.12.06

자바(Java)의 장단점

Java는 1995년 처음 등장한 이래, 현재까지도 널리 사용되는 프로그래밍 언어 중 하나입니다. 플랫폼 독립성과 강력한 생태계를 바탕으로 많은 개발자들의 사랑을 받고 있습니다. 이번 글에서는 Java의 장단점을 세세히 살펴보며, 왜 Java가 중요한지, 그리고 어떤 한계가 있는지 분석해보겠습니다. 😊Java의 주요 장점1. 플랫폼 독립성 (Write Once, Run Anywhere)Java는 JVM(Java Virtual Machine) 덕분에 플랫폼 독립적인 언어로 알려져 있습니다. 개발자가 한 번 작성한 코드를 다양한 운영 체제에서 실행할 수 있습니다.public class HelloWorld { public static void main(String[] args) { Syst..

Back_End/JAVA 2024.12.05

자바(Java) Enum 이란?

Enum이란?Enum은 열거형이라는 뜻으로, 일정한 상수 집합을 정의할 때 사용됩니다. 일반적으로 프로그램에서 상수를 사용할 때, 숫자나 문자열을 직접 사용하면 가독성이 떨어지고 오류를 유발할 가능성이 높습니다. Enum을 사용하면 이러한 문제를 해결할 수 있습니다.예를 들어, 요일을 표현하는 코드를 작성한다고 가정해 봅시다.Enum 없이 작성한 코드public class Main { public static void main(String[] args) { int MONDAY = 1; int TUESDAY = 2; int WEDNESDAY = 3; int today = MONDAY; if (today == MONDAY) { ..

Back_End/JAVA 2024.12.05

자바에서 동적 바인딩과 정적 바인딩

**바인딩(Binding)**은 메서드 호출이 코드와 연결되는 시점을 의미합니다. 자바에서는 크게 **정적 바인딩(Static Binding)**과 **동적 바인딩(Dynamic Binding)**이 있으며, 이 두 개념은 객체 지향 프로그래밍에서 매우 중요합니다. 🚀1️⃣ 정적 바인딩 (Static Binding) ✨정적 바인딩은 컴파일 타임에 메서드 호출이 결정되는 방식입니다. 자바에서는 private, static, final 메서드가 여기에 해당합니다.특징컴파일러가 호출할 메서드를 미리 결정!성능이 빠름 (런타임에 추가 처리가 필요 없음).다형성(Polymorphism)이 적용되지 않음.✏️ 예제: 정적 바인딩class Animal { static void sound() { S..

Back_End/JAVA 2024.12.03

Feign Client란?

Feign Client는 Spring Cloud에서 제공하는 HTTP 클라이언트 라이브러리로, RESTful API 호출을 더욱 간결하고 선언적으로 처리할 수 있게 도와줍니다. Java 코드로 API 호출을 마치 인터페이스 메서드를 호출하듯 작성할 수 있어 생산성과 가독성이 높아집니다.Feign Client의 주요 특징인터페이스 기반: API를 호출할 때 복잡한 코드를 작성할 필요 없이 인터페이스와 어노테이션만으로 구현할 수 있습니다.내장형 로드 밸런싱: Spring Cloud LoadBalancer와 연동하여 클라이언트 부하 분산을 자동으로 처리합니다.확장 가능: 커스터마이징을 통해 로깅, 요청/응답 변환기 등을 손쉽게 추가할 수 있습니다.타사 라이브러리 통합: OkHttp, Apache HttpCli..

Back_End/JAVA 2024.12.03

스프링(Spring) 필드 주입과 생성자 주입 – 무엇이 더 나은 선택일까?

Spring Framework로 개발을 하다 보면 의존성을 주입해야 할 상황을 자주 마주치게 됩니다. “필드 주입”과 “생성자 주입”은 가장 많이 사용되는 두 가지 방식인데요. 각각의 장단점과 사용 예제를 통해 차이를 살펴보겠습니다.1. 필드 주입(Field Injection)필드 주입은 클래스의 필드에 직접적으로 의존성을 주입하는 방식입니다. 아래는 그 예시입니다:@Componentpublic class FieldInjectionExample { @Autowired private SomeDependency someDependency; public void performTask() { someDependency.execute(); }}🔍 장점코드가 간결합니다. 필요한 ..

Back_End/JAVA 2024.12.02