본문 바로가기

전체 글292

#4 Lesson: Expressions, Statements, and Blocks Expressions, Statements, and Blocks이제 변수와 연산자에 대해 이해했으므로, Expression, Statements, 그리고 Block에 대해 배울 시간입니다. 연산자는 값들을 계산하는 Expression을 만드는 데 사용될 수 있습니다; Expression은 Statement의 핵심 구성 요소입니다; Statement 들은 블록으로 그룹화될 수 있습니다. ExpressionsExpression는 변수, 연산자, 그리고 메서드 호출로 구성되며, 언어의 문법에 따라 구성됩니다. 이는 단일 값으로 평가됩니다. 이미 Expression의 예를 보았는데, 아래에서 굵은 글씨로 나타낸 부분입니다:int cadence = 0;anArray[0] = 100;System.out.printl.. 2024. 7. 18.
Type Erasure(타입 소거) Type Erasure(타입 소거)Java의 제네릭이 런타임 시 타입 정보를 유지하지 않고 컴파일 타임에만 사용되는 메커니즘을 말합니다. 이는 제네릭의 타입 정보가 컴파일 시점에서 제거되고, 런타임에는 원래의 비제네릭 타입으로 변환되는 것을 의미합니다. 타입 소거 덕분에 제네릭이 자바 1.5 이전의 코드와 호환성을 유지할 수 있습니다.타입 소거(Type Erasure)는 Java에서 제너릭을 도입할 때, 기존의 코드와의 하위 호환성(Backward Compatibility)을 유지하기 위해 채택된 메커니즘입니다. 자바 5 때 도입 됐으므로 그전 자바 버전에서는 제너릭을 인식 못하기 때문에 타입 소거 타입 소거의 작동 방식제네릭 타입 정보 제거: 컴파일러는 제네릭 타입 정보를 제거하고 원래의 비제네릭 타입.. 2024. 7. 18.
@ 어노테이션 (Annotation) 어노테이션(Annotation)은 Java에서 코드에 메타데이터를 추가하는 방법입니다. 어노테이션은 컴파일러에게 지시를 내리거나, 런타임 시 특정 행동을 수행하도록 할 수 있습니다. 어노테이션은 클래스, 메소드, 필드, 매개변수 등에 붙여서 사용합니다.  어노테이션의 정의어노테이션은 @ 기호로 시작하며, 다음과 같은 형태로 정의됩니다.// 어노테이션 정의import java.lang.annotation.*;@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface MyAnnotation { String value(); int number() default 0;} @Retention: 어노테이션의 유지 정책을 정.. 2024. 7. 18.
#3 Lesson: Language Basics - Operators Operators변수를 선언하고 초기화하는 방법을 배웠으니 이제 그 변수들을 활용하는 방법에 대해 알고 싶을 것입니다. 자바 프로그래밍 언어의 연산자를 학습하는 것은 좋은 시작입니다. 연산자는 특정 작업을 수행하는 특수 기호로, 하나, 둘 또는 셋의 피연산자에 대해 작업을 수행한 다음 결과를 반환합니다.자바 프로그래밍 언어의 연산자를 탐색하는 동안 연산자의 우선순위가 높은 것부터 미리 알고 있으면 도움이 될 수 있습니다. 다음 표에 나열된 연산자는 우선순위 순서대로 나열되어 있습니다. 표의 맨 위에 나타나는 연산자일수록 우선순위가 높습니다. 우선순위가 높은 연산자가 상대적으로 우선순위가 낮은 연산자보다 먼저 평가됩니다. 동일한 라인에 있는 연산자는 우선순위가 동일합니다. 동일한 우선순위의 연산자가 동일한.. 2024. 7. 18.
와일드카드의 종류 (insert 되는지 안되는지 is-a관계) 무제한 와일드카드(Unbounded Wildcards) 무제한 와일드카드(Unbounded Wildcard)는 형식을 사용하여 특정 타입에 구애받지 않는 모든 참조 타입(기본타입제외란 뜻)을 나타냅니다. 이는 주로 제네릭 메서드나 클래스에서 타입을 일반화하여 사용할 때 유용합니다. 무제한 와일드카드는 컬렉션에서 읽기 작업은 가능하지만, 타입 안전성을 보장할 수 없기 때문에 삽입 작업은 제한됩니다.  import java.util.ArrayList;import java.util.List;public class UnboundedWildcardExample { // 무제한 와일드카드를 사용하는 메서드 public static void printList(List list) { for (.. 2024. 7. 17.
2024.07.17 (수) { raw type, Arrays.asList, 자바에 2가지의 경고 "unchecked", "varargs" } raw type Raw type은 Java의 제네릭스(Generic)를 사용할 때 타입 파라미터를 명시하지 않은 경우를 의미합니다. 간단히 말해, 제네릭 클래스나 인터페이스를 사용할 때 타입을 지정하지 않고 사용하는 것을 raw type이라고 합니다. 이는 Java 5 이전의 호환성을 위해 제공되며, 제네릭스가 도입되기 이전의 코드와 호환성을 유지하기 위해 존재합니다. Raw Type의 문제점raw type을 사용하면 다음과 같은 문제가 발생할 수 있습니다:타입 안전성 손실: 컴파일러가 타입을 체크하지 않기 때문에 잘못된 타입의 객체가 저장될 수 있습니다. 이는 런타임 오류를 발생시킬 수 있습니다.가독성 저하: 코드를 읽는 사람이 타입 정보를 알 수 없기 때문에 코드의 가독성이 떨어집니다.경고 발생: 컴.. 2024. 7. 17.