📕Java

Wating
📕Java

JDK, JVM, Java코드는 어떻게 컴파일되고 실행되는가?

How does JVM compile and execute java code? 매번 JAVA 프로그래밍을 위해서 JDK를 설치하지만 그것이 무엇인지는 제대로 몰랐습니다. 왜 JDK가 필요하며 JAVA 코드를 작성하고 이것이 어떻게 컴파일되어 실행될 수 있는지 알아보겠습니다. JDK = JRE + Developer toolsJRE = JVM + Class Library ✅ JDKJDK(Java Development Kit)는 자바 개발을 위한 개발 도구 세트입니다. JDK에는 자바 프로그래밍 언어를 작성, 컴파일, 디버그 및 실행하기 위한 여러 도구와 라이브러리가 포함되어 있습니다. JDK는 Java 개발에 사용되며, Java 프로그램을 컴파일하고 디버그하는 데 필요한 모든 실행 파일, 이진 파일 및 도구..

📕Java

Collection -List, ArrayList, LinkedList

✅ List Interface List 인터페이스는 자바 프로그래밍 언어에서 제공하는 인터페이스 중 하나입니다. 이 인터페이스는 순서가 있는 요소의 컬렉션을 나타내며, 중복된 요소를 포함할 수 있습니다. List 인터페이스는 자바의 컬렉션 프레임워크에 속하며, 배열과 유사한 동작을 수행하는 동적인 크기의 리스트를 제공합니다. List 인터페이스는 java.util 패키지에 정의되어 있으며, java.util.Collection 인터페이스를 확장하고 있습니다. 따라서 List는 Collection 인터페이스에서 정의된 모든 메서드를 상속받습니다. 또한 List 인터페이스는 자체적으로 인덱스를 사용하여 요소에 접근하는 메서드를 추가로 정의하고 있습니다. . ➡️ List 인터페이스의 주요 특징은 다음과 같습..

📕Java

Java Collection -Hash, Hash Funtion, Hash Table

Collection에서 "hash"라는 용어는 일반적으로 해시 기반 자료구조(Hash-based data structure)와 관련된 의미로 사용됩니다. 이러한 자료구조들은 객체를 저장하고 검색하기 위해 해시 함수(hash function)를 사용하여 객체를 해시 값으로 변환하고, 해당 해시 값을 인덱스로 사용하여 객체를 저장하거나 검색합니다. 해시(Hash)는 임의의 크기를 갖는 데이터[Key]를 고정된 크기의 값으로 변환하는 알고리즘입니다. 이렇게 변환된 값은 해시 값 또는 해시 코드라고도 합니다. 해시 함수는 입력 데이터의 작은 변화에도 결과 값이 크게 달라지도록 설계되어 있습니다. 따라서 입력 데이터가 달라지면 해시 값도 크게 달라집니다. ➡️ Key로 많이 사용되는 것은 다양한데, 일반적으로 다..

📕Java

Java final 키워드

final 키워드는 자바에서 사용되는 한정자(modifier)로, 변수, 메서드, 클래스에 적용될 수 있습니다. final 키워드가 적용된 요소는 변경될 수 없는 불변성(Immutability)을 가지게 됩니다. final 필드final 키워드로 선언된 필드는 상수(Constant)로 취급됩니다. 한 번 초기화되면 그 값을 변경할 수 없습니다. final 필드는 일반적으로 대문자로 작성되며, 초기화는 선언 시 또는 생성자에서 이루어집니다. 상수의 값은 프로그램 실행 도중에 변경할 수 없기 때문에 일반적으로 고정된 값이나 설정값에 사용됩니다.final int MAX_VALUE = 100; final double PI = 3.14159; final String APPLICATION_NAME; public M..

📕Java

Java 제네릭(Generic)

✅ 제네릭(Generic)이란?제네릭(Generic)은 자바에서 타입 안정성을 확보하고 재사용성을 높이기 위해 도입된 기능입니다. 제네릭은 클래스, 인터페이스, 메서드 등에서 사용할 수 있으며, 컴파일 시에 타입 체크를 수행하여 타입 안정성을 보장합니다. 🔎—간단하게 알아보는 컴파일과 런타임 컴파일 : JVM이 해석할 수 있는 바이트 코드로 변환되는 과정( .java → .class ) 런타임 : 바이트 코드가 JIT에 의해 기계어로 변환되어 프로그램이 실행 🔹제네릭이점타입 안정성(Type Safety)제네릭은 컴파일 시에 타입 체크를 수행하여 타입 안정성을 보장합니다. 즉, 잘못된 타입 사용으로 인한 런타임 에러를 사전에 방지할 수 있습니다. 타입 체크를 통해 컴파일러는 프로그램에서 발생할 수 있는 타..

📕Java

Java Class의 Static 필드

🔎static 필드 == class 필드 == static 변수 == class 변수 == 공유변수 위의 단어들은 문맥에 따라 약간의 차이가 있을 수 있지만 대부분 비슷한 의미로 쓰입니다. ✅ static 필드자바에서 static 필드는 클래스 수준의 변수로, 해당 클래스의 모든 인스턴스가 공유하는 필드입니다. static 필드는 클래스가 처음으로 로드될 때 초기화되며, 프로그램이 실행되는 동안 메모리에 상주하게 됩니다. static 필드는 JVM의 메모리의 Method Area에 저장됩니다. 정적 변수(즉, static 변수)는 클래스 수준의 변수이기 때문에 해당 클래스의 인스턴스화 여부와는 관계없이 메모리에 유지됩니다. 이러한 변수는 해당 클래스의 모든 인스턴스에서 공유되며, 클래스 이름을 통해 직접..

📕Java

Java Collection -Set, HashSet, TreeSet, LinkedHashSet

✅ Set Interface 자바에서 Set은 중복된 요소를 허용하지 않는 컬렉션 인터페이스입니다. Set은 수학적인 집합 개념을 모델링하며, 고유한 요소들의 모음을 나타냅니다. Set은 다양한 구현체를 가질 수 있으며, 가장 일반적인 구현체로는 HashSet, TreeSet, LinkedHashSet이 있습니다. 중복되는 요소(원소)를 허용하지 않습니다.저장 순서를 유지하지 않습니다. (LinkedHashSet 만 예외) Set 인터페이스는 Collection 인터페이스를 확장하고 있으며, 다양한 메서드를 제공합니다. 예를 들어, Set에 요소를 추가하려면 add() 메서드를 사용하고, 요소를 삭제하려면 remove() 메서드를 사용합니다. 또한, Set의 크기를 확인하려면 size() 메서드를 사용할..

📕Java

Java 생성자, 생성자 빌더 패턴

✅ 생성자(Constructor)자바에서 생성자(Constructor)는 클래스의 인스턴스를 초기화하는 특별한 메서드입니다. 객체를 생성할 때 호출되며, 주로 객체의 멤버 변수를 초기화하고 객체의 초기 상태를 설정하는 데 사용됩니다. 생성자는 클래스 이름과 동일한 이름을 가지고 있으며, 반환 값(return)이 없고 실제로 반환 타입을 선언하지 않습니다. 생성자의 특징생성자는 클래스의 인스턴스를 초기화하는 데 사용됩니다.생성자는 객체를 생성할 때 자동으로 호출됩니다.생성자는 클래스 이름과 동일한 이름을 가지고 있습니다.생성자는 반환 값(return)이 없고, 반환 타입을 선언하지 않습니다.클래스에 생성자를 명시적으로 선언하지 않으면 컴파일러가 기본 생성자를 자동으로 생성합니다.(default Constr..

📕Java

Java Exception

✅ Throwable자바에서 Throwable은 모든 예외와 오류의 최상위 클래스입니다. Throwable은 예외와 오류 모두를 포함하며, 이를 통해 예외 처리 및 오류 처리를 일관되게 다룰 수 있습니다. Throwable은 다음과 같은 주요 특징을 갖습니다. 🔎—예외(Exception)예외는 프로그램이 실행 중에 예측 가능하고 처리 가능한 상황을 나타냅니다. 예외는 예외 처리 코드를 통해 프로그램의 정상적인 흐름을 제어할 수 있습니다. 예를 들어, 파일이 존재하지 않거나 유효하지 않은 데이터를 입력받는 경우 등이 예외 상황에 해당합니다. 예외는 java.lang.Exception 클래스를 상속받는 클래스들로 표현됩니다. —오류(Error)오류는 프로그램이 심각한 상황에 직면하여 복구할 수 없는 상태에 ..

Wating
📕Java

Java 제네릭 배열 생성의 제약

💡Java에서는 제네릭 배열을 지원하지 않습니다. 이는 배열의 공변성 때문입니다. 배열의 공변성은 프로그래밍 언어에서 타입 시스템의 개념 중 하나입니다. 공변성은 주로 타입 변환(타입 캐스팅)과 관련이 있습니다. ✅ 배열의 공변성배열의 공변성(covariance)은 자바 배열의 특징 중 하나입니다. 공변성은 자식 타입의 배열이 부모 타입의 배열의 참조 변수에 대입될 수 있는 성질을 의미합니다. 이는 배열의 타입이 배열 요소의 타입의 하위 타입이면 형변환이 가능하다는 것을 의미합니다. 공변성을 통해 부모 타입의 배열 참조변수가 자식 타입 배열을 참조할 수 있습니다. 예를 들어, 자식 클래스가 부모 클래스의 모든 기능을 상속받은 경우, 부모 타입의 배열을 자식 타입의 배열로 취급할 수 있습니다. 이는 공변성..

jhcode33
'📕Java' 카테고리의 글 목록 (2 Page)