Dev/Java23 『Java』 for-each 문을 사용하기 위한 인터페이스는 무엇인가? for-each 문을 사용하기 위해서는 Iterable 인터페이스를 구현해야 한다. 자바 컬렉션 프레임워크의 클래스들은 Iterable 인터페이스를 구현하여 iterator() 메서드를 제공하며 이를 통해 요소들을 순회할 수 있다. for-each for-each 문은 배열이나 컬렉션과 같은 반복 가능한 객체를 순회(iterate) 하기 위한 간단한 문법을 제공한다. Iterable Interface for-each 문을 사용하려면 대상 객체가 Iterable 인터페이스를 구현해야 한다. Iterable 인터페이스는 java.lang 패키지에 위치하며 제네릭 인터페이스로 Iterator iterator() 메서드를 선언하고 있다. Iterable Interface 구조iterator() 메서.. 2024. 11. 19. 『Java』 생성자와 static 블록은 무엇이 다를까? 생성자와 static 블록은 객체와 클래스의 초기화를 담당하는 요소다. 이 둘은 초기화 시점과 적용 범위에서 차이가 있으며 각기 다른 목적을 가지고 있다. static 블록클래스 로딩 시점에 한 번만 실행되며 클래스 수준에서의 초기화 작업에 사용된다.주로 static 변수의 초기화에 활용된다.인스턴스 생성과는 무관하게 클래스가 메모리에 로드될 때 실행된다. 위 예제에서 static 블록은 MyClass가 로딩될 때 실행되며 staticVariable을 초기화한다. 생성자객체가 생성될 때마다 호출된다.인스턴스 변수의 초기화나 객체 생성 시 필요한 설정을 담당하며, 오버로딩을 통해 다양한 생성자를 정의할 수 있다.반환 타입이 없으며 클래스 이름과 동일한 이름을 가진다. 생성자는 객체가 생성될 때마다 .. 2024. 11. 19. 『Java』 Exception 처리, 맛보기 Exception 계층자바에서 Exception은 프로그램 실행 중에 발생할 수 있는 문제를 처리하기 위한 메커니즘이다.Exception은 크게 Checked Exception과 Unchecked Exception으로 분류된다. 자바의 예외 처리는 다음과 같은 키워드를 사용하며 try, catch, finally, throw, throws예외를 다루기 위한 예외 처리용 객체 또한 제공한다. 객체설명Object- 자바에서 기본형을 제외한 모든 것은 객체다. - 예외도 객체다. - 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object다.Throwable- 최상위 예외다. 하위에 Exception과 Error가 있다.Error- 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에.. 2024. 11. 8. 『Java』 동일성 (Identity) vs 동등성 (Equality) 자바에서 객체를 비교할 땐 동일성과 동등성 개념이 필요하다. 동일성 (Identity)메모리 내 주소가 같은지 비교한다. 자바에서는 == 연산자를 사용하여 동일성 비교한다.동등성 (Equality)값이 동등한 지 비교한다. 자바에서는 equals() 메서드를 재정의하여 동등성 비교한다. 자동차 클래스 비교하기 Car 클래스는 name과 position 상태를 가진다. 여기서 같은 이름의 자동차는 존재할 수 없다는 요구사항이 있다고 가정하자. 따라서 이름이 같은 두 Car 객체는 동등한 객체로 취급되어야 한다. equals() 메서드 재정의this == o로 메모리 주소가 같은지 확인한다.o가 null이거나 클래스 타입이 다르면 false를 반환한다.name 필드의 값이 같은지를 비교하여 논리적 동.. 2024. 11. 4. 『Java』 int 타입과 Integer 타입은 성능 차이가 있는가? 래퍼 클래스 성능래퍼 클래스는 객체이기 때문에 기본형보다 다양한 기능을 제공한다. 그렇다면 왜 기본형도 함께 제공할까? 기본형과 래퍼 클래스의 성능 차이를 살펴보자. 기본형 연산은 래퍼 클래스보다 약 5배 정도 빠르다. 참고로, 실제 성능 차이는 시스템 환경에 따라 다를 수 있다. 기본형은 메모리에서 단순히 그 크기만큼의 공간을 차지한다. 예를 들어, int는 일반적으로 4바이트의 메모리를 사용한다. 반면, 래퍼 클래스인 Integer의 인스턴스는 내부에 필드로 기본형 값을 포함할 뿐만 아니라 자바 객체로서의 메타데이터도 포함하므로 더 많은 메모리를 사용한다. 자바 버전과 시스템에 따라 다르지만, 대략 8~16바이트 정도의 메모리가 추가로 사용된다. 기본형, 래퍼 클래스 어떤 것을 사용해야 할까?.. 2024. 11. 4. 『Java』 Wrapper Class는 무엇인가? Wrapper ClassWrapper Class는 Primitive Type의 객체 버전이다. Primitive Type은 다음과 같은 한계가 있다.객체가 아니다. Primitive Type은 객체가 아니므로 메서드를 제공할 수 없다.null 값을 가질 수 없다. Primitive Type은 null 값을 가질 수 없다.때로는 데이터가 `없음`이라는 상태를 나타내야 할 필요도 있다. Wrapper Class 종류Primitive TypeWrapper ClassbyteBytecharCharacterintIntegerfloatFloatdoubleDoublebooleanBooleanlongLongshortShort Wrapper Class는 java.lang 패키지에 포함되어 있으며 Primitive Ty.. 2024. 10. 31. 『Java』 객체의 불변성(Immutability)이란 무엇인가? 객체의 불변성(Immutability)이란?객체가 불변(immutable)하다는 것은 생성 후 객체의 상태가 변경되지 않는다는 뜻이다. 즉, 객체를 처음 만들었을 때의 상태를 끝까지 유지한다는 말이다. 불변성의 중요성불변 객체는 여러 장점이 있다. 가장 큰 장점은 동기화 문제를 피할 수 있다는 것이다. 객체 상태가 바뀌지 않으므로 여러 스레드에서 동시에 접근해도 Thread-safe 하다. 또한, Side Effect가 없어 설계가 용이하며 캐싱에도 유리하다. Java에서 불변 객체를 만드는 방법setter 메서드 제공 ❌ 객체의 상태값을 변경하는 setter 메서드를 아예 만들지 않는 방법이다. 상태 값을 변경할 필요가 없는 클래스에 setter 메서드를 추가하는 건 불필요하다. final cla.. 2024. 10. 30. 『Java』 다형성 (Polymorphism) 다형성 (Polymorphism) 다형성이란 하나의 객체에 여러 가지 타입을 대입할 수 있다는 것을 의미한다.자바에서는 다형성으로 인해 객체 지향 프로그래밍의 이점을 극대화할 수 있다. 하나씩 알아보자. 오버로딩오버로딩은 같은 이름의 메서드를 매개변수의 개수나 타입에 따라 여러 형태로 정의하는 방식이다. 오버라이딩오버라이딩은 상속받은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 방식이다. 추상 클래스추상 클래스는 부모 클래스는 제공하지만, 실제 생성되면 안 되는 클래스를 추상 클래스라 한다. 추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스다. 따라서 실체인 인스턴스가 존재하지 않는다. 대신에 상속을 목적으로 사용되고 부모 클래스 역할을 담당한다. 인터페이스 인터페이스를 구현하.. 2024. 10. 30. 『Java』 Gradle은 무엇인가? 의존성 관리는 왜 필요한가? Gradle Gradle은 강력한 빌드 도구다. Apache Ant와 Maven의 장점을 결합하면서 성능을 향상한 빌드 자동화 시스템이다. 대표적으로 변경된 부분만 빌드할 수 있고, 병렬 처리를 통해 빌드 시간을 단축시킨다는 이점이 있다. 빌드 도구는 Ant -> Maven -> Gradle 순으로 발전되어 왔다. 의존성 관리는 왜 필요한가?의존성은 프로젝트가 필요로 하는 외부 라이브러리를 의미한다. 예를 들어, Java 기반 웹 애플리케이션을 개발할 때는 Spring, Hibernate 등의 라이브러리가 필요하다. 이때 Gradle은 프로젝트의 라이브러리 의존성을 선언적으로 관리하고 필요한 라이브러리를 자동으로 다운로드한다. Gradle에서 의존성 관리하기Gradle에서 의존성을 관리하면 외부 라이.. 2024. 10. 25. 이전 1 2 3 다음