📕Java

📕Java

Java Method Signature

✅ 메서드 시그니처(Method signature)란?Java에서 메서드 시그니처는 메서드의 정의에서 메서드 이름과 매개변수 리스트의 조합을 말합니다. 메서드 이름과 매개변수 리스트가 중요한 이유는 메서드의 오버로딩과 메서드 시그니처 추상화 때문입니다. 메서드 시그니처 추상화는 나중에 배울 개념이므로 간단하게 오버로딩 때문에 중요하다고 이해하고 있으면 될 것 같습니다. Java 컴파일러는 메서드 이름과 매개변수 리스트를 통해 메서드 간의 차이를 식별한다. public class MyClass { public int calculateSum(int a, int b) { return a + b; } public void printMessage(String message) { System.out.println(..

📕Java

Syntax of Lambda Expressions

🔥앞에서 람다를 왜 사용하고, 기본적으로 어떻게 사용하는지 살펴보았습니다. 여기서는 람다 표현식을 더 자세하게 알아보겠습니다. ✅ Syntax of Lambda Expressions➡️ 람다 표현식은 다음과 같은 구성 요소로 이루어져 있습니다.() 괄호로 둘러싸인 콤마로 구분된 formal 파라미터의 리스트CheckPerson.test 메서드는 Person 클래스의 인스턴스를 나타내는 p라는 하나의 파라미터를 가지고 있습니다.Note: 람다 표현식에서는 파라미터의 데이터 타입을 생략할 수 있습니다. 또한, 하나의 파라미터만 있는 경우에는 괄호를 생략할 수도 있습니다. 예를 들어, 다음 람다 표현식도 유효합니다.p -> p.getGender() == Person.Gender.MALE && p.getAge(..

📕Java

Lambda Expressions

Java 공식 문서를 번역하며 학습한 글입니다. ✅ 람다 표현식익명 클래스의 한 가지 문제점은, 인터페이스에 하나의 메서드만 포함되어 있는 등 구현이 매우 간단한 경우에 익명 클래스의 구문이 다소 복잡하고 이해하기 어려울 수 있다는 것입니다. 이러한 경우에는 주로 다른 메서드에 기능을 인자로 전달하려고 할 때(예: 버튼을 클릭했을 때 어떤 동작을 수행해야 하는지) 람다 표현식이 사용됩니다. 람다 표현식을 사용하면 기능을 메서드 인자로 취급하거나 코드를 데이터로 취급할 수 있습니다. 💡—First Class Object 컴퓨터 프로그래밍 언어 디자인에서, 일급 객체(first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 인자로 넘기기,..

Wating
📕Java

SOLID 객체 지향 설계 원칙

✅ SOLID란? SOLID는 객체 지향 프로그래밍에서의 다섯 가지 원칙을 의미합니다. 이러한 원칙들은 소프트웨어 디자인의 품질을 높이고 유지보수성과 확장성을 향상시키는 데 중요한 역할을 합니다. SRPThe Single Responsibility PrincipleA class should have one, and only one, reason to changeOCPThe Open Closed PrincipleYou should be able to extend a classes behavior, without modifying it.LSPThe Liskov Substitution PrincipleDerived classes must be substitutable for their base classes...

Wating
📕Java

Learning the Java Language -Generics(4)

✅ Type Erasure타입 소거제네릭은 컴파일 타임에 더 엄격한 타입 체크를 제공하고 제네릭 프로그래밍을 지원하기 위해 Java 언어에 도입되었습니다. 제네릭을 구현하기 위해 Java 컴파일러는 타입 소거(Type Erasure)를 다음에 적용합니다: 제네릭 타입의 모든 타입 파라미터를 Bounds로 바꾸거나 타입 파라미터가 제한되지 않은 경우 Object로 바꿉니다. 따라서 생성된 바이트코드에는 일반 클래스, 인터페이스 및 메서드만 포함됩니다.타입 안전을 유지하기 위해 필요한 경우 타입 캐스트를 삽입하십시오.확장된 제네릭 타입에서 다형성을 유지하기 위해 브리지 메서드를 생성합니다. 타입 소거는 파라미터화된 타입에 대해 새 클래스가 생성되지 않도록 합니다. 결과적으로 제네릭은 런타임 오버헤드를 발생시..

Wating
📕Java

Learning the Java Language -Generics(3)

❗오라클의 Java Documentation에서 Learning the Java Language의 Generics 부분을 번역하여 정리한 부분입니다. 공식 문서를 통한 학습을 위해 번역되었습니다. 공식 문서에서 설명이 추가로 더 필요하다고 생각한 부분은 👉 표시하여 개인적으로 추가하였습니다. 번역이 매끄럽지 않은 부분은 계속 고쳐나가고 있습니다. ✅ Wildcards일반 코드에서 와일드카드라고 하는 물음표(?)는 알 수 없는 타입을 나타냅니다. 와일드카드는 다양한 상황에서 사용할 수 있습니다. 때로는 반환 타입으로 사용됩니다. 와일드카드는 제네릭 메서드 호출, 제네릭 클래스 인스턴스 생성 또는 상위 타입에 대한 타입 아규먼트로 사용되지 않습니다.다음 섹션에서는 상한 와일드카드(Upper Bounded W..

📕Java

Learning the Java Language -Generics(2)

❗오라클의 Java Documentation에서 Learning the Java Language의 Generics 부분을 번역하여 정리한 부분입니다. 공식 문서를 통한 학습을 위해 번역되었습니다. 공식 문서에서 설명이 추가로 더 필요하다고 생각한 부분은 👉 표시하여 개인적으로 추가하였습니다. 번역이 매끄럽지 않은 부분은 계속 고쳐나가고 있습니다. ✅ Type Inference타입 추론(Type Inference)는 메서드 호출에 적용할 수 있는 타입 아규먼트(또는 아규먼트)를 결정하기 위해 각 메소드 호출 및 해당 메서드 선언을 살펴보는 Java 컴파일러의 기능입니다. 추론 알고리즘은 아규먼트의 타입과 (가능한 경우)반환되는 타입을 보고 결정합니다. 마지막으로 추론 알고리즘은 모든 아규먼트와 함께 작동하..

📕Java

JVM 메모리 구조

JVM도 하나의 애플리케이션이라고 할 수 있습니다.자바 가상 머신(JVM)의 메모리 구조(Runtime Data Area)는 크게 다음과 같은 영역으로 나뉩니다. 메소드 영역(Method Area)힙 영역 (Heap)스택 영역 (Stacks)PC 레지스터 (PC Registers)네이티브 메소드 스택 (Native Method Stacks) Runtime Data Area ✅ 메소드 영역(Method Area)메서드 영역은 JVM의 메모리 구조 중 하나로, JVM이 시작될 때 생성됩니다.메소드 영역은 클래스의 메타데이터 즉, 클래스 레벨의 정보들을 저장하는 공간입니다.클래스 레벨의 정보는 다음과 같습니다.클래스 이름수퍼클래스 이름인터페이스 코드메소드의 바이트 코드런타임 상수 풀필드와 메서드 데이터생성자메..

📕Java

Java Native 키워드

✅ Natvie 키워드란?Java의 native 키워드는 Java 언어로 작성된 코드에서 네이티브 코드(다른 언어로 작성된 코드)를 사용하기 위해 선언하는 키워드입니다. native 메서드는 Java 언어로 작성된 메서드가 아니라, 네이티브 코드로 작성된 메서드를 참조하고 호출할 수 있도록 합니다. native 키워드가 사용된 메서드는 메서드의 구현부가 Java 코드가 아니라, 외부 언어로 작성된 네이티브 코드로 제공됩니다. 네이티브 코드는 주로 C, C++ 등의 언어로 작성되며, 특정 플랫폼 또는 하드웨어와 밀접하게 연관된 기능을 사용하기 위해 활용됩니다. 예를 들어, 운영체제의 API 호출, 하드웨어 접근, 외부 라이브러리와의 상호작용 등을 네이티브 코드를 통해 구현할 수 있습니다. ➡️ native..

📕Java

Learning the Java Language -Generics(1)

❗오라클의 Java Documentation에서 Learning the Java Language의 Generics 부분을 번역하여 정리한 부분입니다. 공식 문서를 통한 학습을 위해 번역되었습니다. 공식 문서에서 설명이 추가로 더 필요하다고 생각한 부분은 👉 표시하여 개인적으로 추가하였습니다. 번역이 매끄럽지 않은 부분은 계속 고쳐나가고 있습니다. ✅ 왜 제네릭을 사용하는가?간단히 말해서, 제네릭은 클래스, 인터페이스 및 메서드를 정의할 때 타입(클래스 및 인터페이스)을 파라미터로 사용할 수 있습니다. 메소드 선언에 사용되는 더 친숙한 formal 파라미터와 마찬가지로, 타입 파라미터는 다른 입력으로 동일한 코드를 재사용할 수 있는 방법을 제공합니다. 차이점은 formal 파라미터에 대한 입력은 값인 반면..

jhcode33
'📕Java' 카테고리의 글 목록