본문 바로가기

Language/Java29

[Java API] Class 클래스 ㅇClass 클래스: Java Reflection API의 중요한 부분으로, JVM에서 클래스, 인터페이스, 배열 등의 메타데이터를 표현하는 역할Class 객체는 Java의 모든 클래스와 인터페이스에 대해 자동으로 생성되며, 각 클래스와 인터페이스의 런타임 표현을 제공한다. 이를 통해 클래스의 구조, 메서드, 필드, 생성자, 애노테이션 등의 정보에 접근할 수 있다.다시 정리하면, Class 클래스를 통해 개발자는 실행 중인 자바 애플리케이션 내에서 필요한 클래스의 속성과 메서드에 대한 정보를 조회하고 조작할 수가 있다. [Class 클래스 주요 기능]- 타입 정보 얻기: 클래스의 이름, 슈퍼클래스, 인터페이스, 접근 제한자 등과 같은 정보를 조회할 수 있다- 리플렉션(reflection): 클래스에 정의.. 2024. 8. 23.
[Java API] 래퍼 클래스(Wrapper Class) ㅇ래퍼 클래스(Wrapper Class): 기본 자료형(Primitive Type)을 객체로 다룰 수 있게 감싸주는 클래스자바에는 8개의 기본 자료형이 있는데, 이들은 객체가 아니기 때문에 객체지향 프로그래밍(OOP)에서 요구하는 여러 기능을 지원하지 않는다. 예를 들어, 기본 자료형은 컬렉션 프레임워크(e.g. ArrayList, HashMap)와 같은 자바의 API를 사용할 때 문제가 될 수 있다. 이 문제를 해결하기 위해 자바는 각 기본 자료형에 대응하는 래퍼 클래스를 제공한다. 간단한 활용 예시: 래퍼 클래스를 사용하여 기본 자료형을 ArrayList에 저장import java.util.ArrayList;public class WrapperClassExample { public static .. 2024. 8. 22.
[Java API] StringBuilder 클래스 불변인 String 클래스에는 단점이 존재한다. "A" + "B"String("A") + String("B") // 문자는 String 타입이다String("A").concat(String("B")) // 문자의 더하기는 concat을 사용한다new String("AB") // String은 불변이므로 새로운 객체를 생성한다 두 문자를 더하는 경우 다음과 같이 동작한다.더 많은 문자를 더하는 경우에는String str = "A" + "B" + "C" + "D";/*String str = String("A") + String("B") + String("C") + String("D");String str = new String("AB") + String("C") + String("D");String str .. 2024. 8. 22.
[Java API] String 클래스 주요 메서드 정리 String 클래스는 문자열로 처리할 수 있는 다양한 기능을 제공한다. 기능이 방대하므로 필요한 기능이 있으면 그때마다 검색하거나 API 문서를 찾아보도록 하자.  - isEmpty(): 문자열이 비어 있는지 확인한다. (길이가 0)- isBlank(): 문자열이 비어 있는지 확인한다. (길이가 0이거나 공백(Whitespace)만 있는 경우), Java 11 - equals(Object anObject): 두 문자열이 동일한지 비교- equalsIgnoreCase(String anotherString): 두 문자열을 대소문자 구분 없이 비교 - compareTo(String anotherString): 두 문자열을 사전 순으로 비교- compareToIgnoreCase(String str): 두 문자열.. 2024. 8. 22.
[Java API] Object 클래스 주요 메서드: toString(), equals(), getClass(), hashCode(), notify(), notifyAll(), wait() "기본형을 제외한 모든 것은 객체다"자바에서 모든 클래스의 최상위 부모 클래스는 항상 java.lang 패키지에 있는 Object 클래스이며 명시적이 아닌 묵시적인 상속관계이다. (부모가 없어도 따로 extends를 안 해도 된다)※ Object 배열을 활용하면 세상 모든 타입의 객체를 다 담을 수 있다 [Object 클래스가 제공하는 대표적인 기능]1. 객체의 정보를 제공하는 toString()2. 객체의 같음을 비교하는 equals(Object obj)3. 객체의 클래스 정보를 제공하는 getClass()4. 객체의 해시 코드를 반환하는 hashCode()5. 멀티스레드 메서드 notify(), notifyAll(), wait()6. 객체를 복사하는 clone() - 잘 사용하지 않기에 다루지는 않겠.. 2024. 8. 20.
[Java API] java.lang 패키지 주요 클래스와 인터페이스 정리 자바가 기본으로 제공하는 라이브러리(클래스 모음) 중에 가장 기본이 되는 것이 바로 java.lang 패키지이다. 자바 언어를 이루는 가장 기본이 되는 클래스들을 보관하는 패키지이다. java.lang 패키지는 모든 자바 애플리케이션에 자동으로 import된다. 따라서 import를 생략해도 사용할 수 있다System.out.println() 함수를 그냥 바로 사용할 수 있는 것도 이 이유이다  [java.lang 패키지의 주요 클래스]- Object 클래스: 모든 자바 객체의 최상위 부모 클래스- String 클래스: 문자열을 다루기 위한 클래스, String 객체는 불변(immutable)이며, 생성된 이후에는 변경 x- StringBuilder & StringBuffer 클래스: 변경 가능한 문자열.. 2024. 8. 20.
JAVA 16 - instanceof 신기능(Pattern Matching for instanceof) 자바 16부터는 instanceof를 사용하는 동시에 변수를 선언할 수 있다. 우선, 기존의 코드를 보면 public void call(Parent parent) { parent.parentMethod(); if (parent instanceof Child) { System.out.println("Child 인스턴스가 맞습니다"); Child child = (Child)parent; child.childMethod(); } } 이렇게 인스턴스가 맞는 경우 직접 다운캐스팅을 해줘야 하지만, instanceof의 신기능을 활용하면 public void call(Parent parent) { pa.. 2024. 8. 11.
[Java] 오버라이딩 조건 5가지 1. 선언부가 완전히 같아야 한다 (이름, 매개변수, 리턴타입)※ 반환 타입이 하위 클래스 타입일 수는 있다2. 자식 클래스의 접근 제어자를 더 좁은 범위로 변경할 수 없다 오버라이딩 메서드의 접근 제어자는 상위 클래스의 메서드보다 더 제한적이어서는 안된다. 예를 들어, 상위 클래스의 메서드가 protected로 선언되어 있으면 하위 클래스에서 이를 public 또는 protected로 오버라이드할 수 있지만, private 또는 default로 오버라이드 할 수 없다.3. 조상클래스의 메서드보다 더 많은 예외를 선언할 수 없다 오버라이딩 메서드는 상위 클래스의 메서드보다 더 많은 체크 예외를 throws로 선언할 수 없다. 하지만 더 적거나 같은 수의 예외, 또는 하위 타입의 예외는 선언할 수 있다4... 2024. 8. 9.
[Java] 상속과 메모리 구조 예시로 Car 부모 클래스와 ElectricCar 자식 클래스가 있다고 하자 부모 클래스 (슈퍼 클래스)package extend;public class Car { public void move() { System.out.println("차를 이동합니다."); }} 자식 클래스 (서브 클래스)package extend;public class ElectricCar extends Car { public void charge() { System.out.println("충전합니다."); }}  이러한 상황에서 ElectricCar 클래스 객체를 만들어보자ElectricCar electricCar = new ElectricCar();new Ele.. 2024. 8. 9.