Elice
엘리스 12일차 - 제네릭(Generic)과 유용한 클래스
공부곤
2024. 7. 9. 12:08
제네릭(Generic)
- 자바 5버전에서 등장, 타입 선언을 동적으로
- 도큐먼트에서 대부분 제네릭 사용
- 결정되지 않은 타입을 타입 변수로 처리하고 실제 사용시 구체적인 타입으로 대체하는 Java의 문법 요소
public class Subject <T> { //타입 지정
public T name;
}
- 선언부에 ‘<>’부호를 사용하고 그 안에 타입 변수 위치
- 타입 안전성과 코드 중복 최소화
제한된 타입 변수
List<?> unbound = new ArrayList<>();
List<? extends Integer> upperBounded = new ArrayList<>();
List<? super Integer> lowerBounded = new ArrayList<>();
- Unbound
- Upper Bounded
- Lower Bounded
유용한 클래스
Java API 도큐먼트
- Java 공식 문서
- Java 개발자의 가장 중요한 참고 자료 중 하나
- 패키지, 클래스/인터페이스, 상속 구조도, 메서드 등
- 버전 확인 및 새로운 기능에 대한 간편한 확인
import와 export
import java.io.*
// 다른 모듈의 패키지를 import
module <자바_모듈_이름> {
requires <모듈의 종속성>;
exports <외부로_노출시킬_패키지>;
}
//작성한 클래스를 외부로 export
java.base
- 모든 모듈이 requires 하는 모듈(수많은 유용한 패키지를 가짐)
java.lang - Object
- 모든 Java 클래스 들의 조상 클래스
- 필드가 없고 메서드로만 구성
- toString() - 인스턴스를 토대로 문자열로 만들어 반환
- clone() - 내부 필드값을 복사하여 새로운 인스턴스를 생성하고 반환
- equals(Object) - 객체의 주소 값 비교하여 boolean 반환
java.lang - String
- 문자열을 다루기 위한 클래스 불변(Immutable)의 속성을 가짐
java.lang - StringBuilder
- 문자열을 더하거나 변경할 때 발생하는 메모리 낭비를 줄이기 위해 사용
- 단일 스레드 환경에서 사용 추천
- append, insert, delete, replace 등
java.lang - StringTokenizer
- 문자열을 특정 구분자로 분리, 토큰들을 순차적으로 처리 가능
- countTokens, hasMoreTokens, nextToken 등
java.lang - Math
- 수학 연산을 도와주는 클래스
- Static 필드값과 메소드만이 존재
- min, max, sin, cos, floor, ceil, pow, E, PI, DEGREE TO RADIAN
java.util
java.util - Arrays
- 배열을 더 쉽게 다루기 위한 클래스
- copyOf, copyOfRange, fill, binarySearch 등
java.util - regex
- 정규 표현식: 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
- 원하는 문자열을 찾거나, 검증, 치환하기 위한 문자열
java.util - Random
- 난수 생성 클래스
java.util - Calendar
- 날짜와 시간을 다루기 위한 클래스
java.io
- 시스템 입력 및 출력을 제공해주는 패키지
java.time
- LocalDate
- LocalTime
- 날짜와 시간을 표현 및 조작하기 위한 패키지
- 기존의 Date, Calendar 보다 개선된 방식