High Level Programming Language(95)
-
Configuration Utilities
Properties (속성)Properties은 키/값 쌍으로 관리되는 구성 값입니다. 각 쌍에서 키와 값은 모두 문자열(String) 입니다. 키는 값을 식별하고 검색하는 데 사용되며, 이는 변수 이름을 통해 변수 값을 조회하는 방식과 유사합니다. 예를 들어, 파일을 다운로드할 수 있는 애플리케이션은 마지막 다운로드에 사용된 디렉터리를 추적하기 위해 "download.lastDirectory"라는 이름의 속성을 사용할 수 있습니다. Properties을 관리하려면 java.util.Properties 클래스의 인스턴스를 생성합니다. 이 클래스는 다음과 같은 메서드를 제공합니다:스트림으로부터 키/값 쌍을 Properties 객체에 로드키를 이용하여 값 검색키와 값 나열키에 대한 열거 수행속성을 스트림에 ..
2025.05.05 -
Lesson: The Platform Environment
애플리케이션은 플랫폼 환경에서 실행됩니다. 이 플랫폼 환경은 기반 운영체제, 자바 가상 머신(Java Virtual Machine, JVM), 클래스 라이브러리, 그리고 애플리케이션이 실행될 때 제공되는 다양한 구성 데이터로 정의됩니다.이 레슨에서는 애플리케이션이 자신의 플랫폼 환경을 조사하고 구성하기 위해 사용할 수 있는 API들을 설명합니다.이 레슨은 다음의 세 가지 섹션으로 구성되어 있습니다:구성 유틸리티(Configuration Utilities) – 애플리케이션이 배포될 때나 사용자가 제공하는 구성 데이터를 접근하는 데 사용되는 API들을 설명합니다.시스템 유틸리티(System Utilities) – System 클래스와 Runtime 클래스에 정의된 다양한 유틸리티 API들을 설명합니다.PAT..
2025.05.05 -
null은 왜 "모든 참조 타입의 하위"로 간주되는가?
자바에서 흔히 "null은 모든 참조 타입의 하위 타입(subtype)"이라고 표현하는 이유는, 타입 계층 상의 직접적인 '하위 클래스'라는 뜻이 아니라, 타입 시스템에서 null 값이 모든 참조형 변수에 대입될 수 있기 때문입니다.즉, null은 특별한 리터럴로, 참조형 타입의 모든 변수에 할당할 수 있는 공통의 "값"이기 때문입니다. ✅ null은 왜 "모든 참조 타입의 하위"로 간주되는가?🔹 자바 타입 시스템 관점에서자바에서는 기본 타입(primitive type)을 제외한 모든 클래스, 배열, 인터페이스는 참조 타입(reference type)입니다.null은 이들 모든 참조 타입 변수에 할당할 수 있는 유일한 값입니다.String s = null;Number n = null;List list ..
2025.04.30 -
Type Inference 알고리즘의 원칙: '후반부 결과'를 사용하지 않는 이유
"추론 알고리즘은 프로그램 후반부의 결과를 사용하지 않습니다"라는 의미는 타입 추론(Type Inference)의 작동 방식을 이해할 때 중요한 개념입니다. 🔍 의미 해석: "프로그램 후반부의 결과를 사용하지 않는다"자바 컴파일러의 타입 유추(type inference) 알고리즘은, 어떤 expression의 타입을 결정할 때 항상 그 시점의 "앞 정보"만 보고 판단합니다.즉, "미래에 어떤 값이 될 것이다", "결국 어떤 타입이 될 것이다" 같은 후속 정보(후반부 결과)는 사용하지 않습니다.✅ 예시:List list = new ArrayList();위 코드에서는 ArrayList()의 타입 아규먼트를 명시하지 않았지만, 좌변이 List이라는 걸 보고 컴파일러는 ArrayList으로 타입을 유추합니다...
2025.04.30 -
Prime Number 17
자바에서 hashCode() 메서드 오버라이딩 시 흔히 사용되는 초기값 17 역시 단순한 임의의 숫자가 아니라, 컴퓨터 과학적·실무적 맥락에서 깊은 의미와 역할을 갖습니다. 🎯 핵심 요약hashCode()의 초기값으로 17을 사용하는 이유는, 해시코드 조합의 출발점을 예측 불가능하게 만들고, 필드 해시코드들의 충돌 가능성을 낮추기 위한 시드(seed) 역할을 하기 때문입니다. 📌 1. 해시코드에서 초기값의 역할은 무엇인가?✅ 해시코드 누적 합산 방식자바에서 다중 필드를 해시코드로 조합할 때는 다음과 같은 방식이 일반적입니다:int result = INITIAL; // 초기값result = 31 * result + field1; // 누적result = 31 * result + fiel..
2025.04.23 -
Prime Number 31
🔬 자바에서 hashCode() 구현 시 사용되는 숫자 31의 의미와 이유1. 서론 – hashCode()는 왜 중요한가?자바의 hashCode()는 단순한 도우미 메서드가 아닙니다. 이는 HashMap, HashSet, Hashtable과 같은 해시 기반 컬렉션의 핵심 엔진으로, 객체의 논리적 동일성 여부를 빠르게 판단하고, 해시 버킷을 정확하게 분배하는 역할을 합니다."좋은 해시코드란, 같은 객체에 대해서는 항상 같은 값을 반환하고, 다른 객체에 대해서는 해시 충돌 없이 분산되는 값이어야 한다." 2. 해시코드 계산에 사용되는 상수 31의 정체🔹 기본 구현 형태@Overridepublic int hashCode() { int result = 17; result = 31 * result ..
2025.04.23