본문 바로가기
728x90
반응형

자바26

[Java] 12-1. 지네릭스(Generics) 지네릭스(Generics) JDK1.5에 처음 도입되었고 당시에는 선택적으로 사용되었다. 하지만 이제는 지네릭스를 모르고는 Java API문서조차 제대로 보기 어려울 만큼 중요한 위치를 차지하고 있다. 기본적인 개념을 알아보도록 하자. 1. 지네릭스란? 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크(compie-time type check)를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 타입 안정성을 높인다는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준다는 의미이다. 지네릭스의 장점 1. 타입 .. 2022. 10. 5.
[Java] 11. 컬렉션 프레임웍(2) 8. HashSet HashSet은 Set인터페이스를 구현한 가장 대표적인 컬렉션이다. Set인터페이스의 특징대로 중복된 요소를 저장하지 않는다. HashSet은 새로운 요소를 추가할 때 add나 addAll 메서드를 사용하는데 이미 저장되어 있는 요소와 중복된 요소를 추가하려고 하면 이 메서드들이 false를 반환하여 추가에 실패했다고 알린다. HashSet은 저장순서를 유지하지 않는다. 저장순서를 유지하고 싶다면 LinkedHashSet을 사용하자. 생성자 또는 메서드 설 명 HashSet() HashSet객체 생성 HashSet(Collection c) 주어진 컬렉션을 포함하는 HashSet객체 생성 HashSet(int capacity) 주어진 값을 초기용량으로하는 HashSet객체 생성 Hash.. 2022. 9. 30.
[baekjoon] 11729 - 하노이 탑 이동순서(Java) 하노이 탑 이동순서 단계별로 풀어보기 10단계 재귀에 나오는 문제로 재귀로 풀어보자 접근법 제일 큰 원판이 우리가 목표로 하는 3번 장대(to)에 들어가야 순서대로 쌓을 수 있다. 그러기 위해서는 제일 큰 원판의 위에 있는 원판들을 2번 장대(remains)에 올려놓고 제일 큰 원판을 3번 장대에 옮겨야 한다. 케이스 1번장대(from) 2번장대(remains) 3번장대(to) 원판 1개 0개 0개 제일 큰 원판 원판 2개 0개 1개 제일 큰 원판 원판 3개 0개 2개 제일 큰 원판 ... ... ... ... 원판 N개 0개 n-1개 제일 큰 원판 이 이후에 다시 2번 장대에 있는 n - 1개의 원판들을 3번장대로 옮겨주면 된다. 원판을 옮기는 총 횟수 케이스 횟수 원판 1개 1번 원판 2개 제일 큰 .. 2022. 9. 29.
[Java] 11. 컬렉션 프레임웍(1) 컬렉션 프레임웍(Collections Framework) 컬렉션 프레임웍은 '데이터 군을 저장하는 클래스들을 표준화한 설계'를 의미한다. JDK1.2 이전까지는 다수의 데이터를 저장할 수 있는 클래스들을 서로 다른 각자의 방식으로 처리해야 했다. JDK1.2부터 컬렉션 프레임웍이 등장하면서 모든 컬렉션 클래스를 표준화된 방식으로 다룰 수 있도록 체계화되었다. 1. 컬렉션 프레임웍의 핵심 인터페이스 컬렉션 프레임웍에서는 컬렉션 데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고 이를 다루는데 필요한 기능을 가진 3개의 인터페이스를 정의하였다. 그리고 인터페이스 List와 Set의 공통부분을 뽑아서 새로운 인터페이스인 Collection을 추가로 정의하였다. 인터페이스 특 징 List 순서가 있는 데이터의.. 2022. 9. 27.
[Java] 10-3. java.time 패키지 java.time패키지 Date와 Calendar가 가지고 있던 단점을 해소하기 위해 JDK1.8부터 java.time패키지가 추가되었다. 패키지 설명 java.time 날짜와 시간을 다루는데 필요한 핵심 클래스들을 제공 java.time.chrono 표준(ISO)이 아닌 달력 시스템을 위한 클래스들을 제공 java.time.format 날짜와 시간을 파싱하고, 형식화하기 위한 클래스들을 제공 java.time.temporal 날짜와 시간의 필드(field)와 단위(unit)를 위한 클래스들을 제공 java.time.zone 시간대(time-zone)와 관련된 클래스들을 제공 위의 표는 java.time 패키지와 서브 패키지들이다. 위의 패키지들에 속한 클래스의 큰 특징은 String클래스처럼 불변이라는.. 2022. 9. 19.
[Java] 10-1, 2. 날짜와 시간 & 형식화 날짜와 시간 1. Calendar와 Date Date는 날짜와 시간을 다룰 목적으로 JDK1.0부터 제공되어온 클래스이다. 그리고 JDK1.1부터 Calendar 클래스를 제공하기 시작했다. JDK1.8에는 java.time패키지가 존재하지만 수십 년 간 사용되었고 현재도 사용되고 있기 때문에 Calendar와 Date클래스를 배워야 한다. 가볍게 배워보자 Calendar와 GregorianCalendar Calendar는 추상클래스이다. Calendar를 상속받아 구현한 클래스로 GregorianCalendar와 BuddhistCalendar가 있다. 시스템의 국가와 지역설정을 확인해서 태국인 경우 후자의 인스턴스를 반환하고 나머지는 전자의 인스턴스를 반환한다. // 비추천 class MyApplica.. 2022. 9. 16.
[Java] 9-2. 유용한 클래스 유용한 클래스 1. java.util.Objects 클래스 Object클래스의 보조 클래스로 모든 메서드가 static이다. 객체의 비교나 널 체크(null check)에 유용하다. static boolean isNull(Object obj) static boolean nonNull(Object obj)​ isNull()은 해당 객체가 널인지 확인하고 null이면 true를 반환하고 아니면 false를 반환한다. nonNull()은 isNull()과 정반대이다. static T requireNonNull(T obj) static T requireNonNull(T obj, String message) static T requireNonNull(T obj, Supplier messageSupplier)​ r.. 2022. 9. 14.
[Java] 9-1. java.lang패키지 java.lang패키지 java.lang패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있다. 그렇기 때문에 java.lang패키지의 클래스들은 import문 없이 사용할 수 있다. 자주 사용되는 클래스 몇가지를 학습해보자. 1. Object클래스 Object클래스는 모든 클래스의 최고 상위 클래스이기 때문에 모든 클래스에서 바로 사용할 수 있다. Object클래스의 메서드 설 명 protected Object clone() 객체 자신의 복사본을 반환한다. public boolean equals(Object obj) 객체 자신과 객체 obj가 같은 객체인지 알려준다. protected void finalize() 객체가 소멸될 때 가비지 컬렉터에 의해 자동으로 호출된다. 이 때 수행되어야 .. 2022. 9. 13.
[Java] 8. 예외처리(exception handling) 예외처리(exception handling) 1. 프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이 결과를 초래한 원인을 프로그램 에러 또는 오류라고 한다. 그리고 오류는 발생시점에 따라 컴파일 에러(compile-time error)와 런타임 에러(runtime error)로 나눌 수 있다. 컴파일 에러는 컴파일 도중 발생하는 에러이고 런타임 에러는 프로그램이 실행하는 도중에 발생한 에러이다. 또 한가지 논리적 에러(logical error)가 있는데 이는 컴파일도 잘되고 실행도 잘 되지만 프로그래머가 의도한 것과 다르게 동작하는 것을 말한다 컴파일 에러컴파일 시에 발생하는 에러 런타임 에러실행 시에 발생하는 에러 논리적 에러컴파일도 되고 실행.. 2022. 9. 7.
728x90
반응형