백엔드/Java의 정석 33

TIL 정리_23

애너테이션의 타입 정의하기 @interface 애너테이션 이름 { 타입 요소이름(); } //애너테이션의 요소 선언 **@Override는 애너테이션이고 Override는 애너테이션의 타입이다 애너테이션의 메서드는 추상 메서드이며, 애너테이션을 적용할 때 지정한다(순서x) 애너테이션의 요소 애너테이션 내에 선언된 메서드로 반환값이 있고 매개변수는 없는 추상메서드의 형태를 가진다 애너테이션을 적용할 때 이 요소들의 값을 빠짐없이 지정해주어야 한다 요소가 하나이고 이름이 value일 때는 요소의 이름 생략가능 요소의 타입이 배열인 경우, 괄호{}를 사용해야 한다 java.lang.annotation.Annotation Annotation은 모든 애너테이션의 조상이지만 상속이 불가하다 public interf..

TIL 정리_22

열거형 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다 값과 타입을 모두 체크한다 열거형을 정의하는 방법 : enum 열거형이름 { 상수명1, 상수명2, ...} 열거형에 정의된 상수를 사용하는 방법 : '열거형이름.상수명' 열거형의 조상 jave.lang.Enum 클래스 모든 열거형은 Enum의 자손이며, 아래의 메서드를 상속받는다 메서드 설명 Class getDeclaringClass() 열거형의 Class 객체를 반환한다 String name() 열거형 상수의 이름을 문자열로 반환한다 int ordinal() 열거형 상수가 정의된 순서를 반환한다(0부터 시작) T valueOf(Class enumType, String name) 지정된 열거형에서 name과..

TIL 정리_21

Collections 컬렉션의 동기화 synchronized() 변경불가 컬렉션 만들기 unmodifiable() 싱글톤 컬렉션 singlaton() 한 종류의 객체만 저장하는 컬렉션 checked() 컬렉션 클래스 정리 & 요약 컬렉션 특징 ArrayList 배열기반, 데이터의 추가와 삭제에 불리, 순차적인 추가삭제는 제일 빠름. 임의의 요소에 대한 접근성이 뛰어남 LinkedList 연결기반, 데이터의 추가와 삭제에 유리. 임의의 요소에 대한 접근성이 좋지 않다 Stack vector를 상속받아 구현 Queue LinkedList가 Queue인 인터페이스를 구현 HashSet HashMap을 이용해서 구현 TreeSet TreeMap을 이용해서 구현 HashMap 배열과 연결이 결합된 형태. 추가, ..

TIL 정리_20

Arrays 배열을 다루는데 유용한 메서드가 정의되어있다 Arrays에 정의된 메서드는 전부 static 메서드이다 배열의 복사 - copyOf(), copyOfRange() 새로운 배열 생성/반환 배열 채우기 - fill(), setAll(); fill()은 배열의 모든 요소를 지정된 값으로 채운다 setAll()은 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 받는다 배열의 정렬과 검색 - sort(), binarySearch(){이진탐색} sort()는 배열을 정렬할 때 사용된다 binarySearch()는 배열에 저장된 요소를 검색할 때 사용된다, 배열이 정렬된 상태여야 결과를 얻는다 배열의 비교와 출력 - equals(), toString() toString()은 배열의 모든 요소를 문자..

TIL 정리_19

Stack과 Queue Stack : LIFO(Last In First Out)구조, 마지막에 저장된 것을 제일 먼저 꺼내게 된다 저장 : push, 호출 : pop 한 방향 박스구조, 배열에 적합하다 Queue : FIFO(First In First Out)구조, 제일 먼저 저장한 것을 먼저 꺼낸다 저장 : offer 호출 : poll 양 방향으로 뚫린 박스구조, 링크드 리스트에 적합하다 Stack의 메서드 메서드 설명 boolean empty() Stack이 비어있는지 알려준다 Object peek() Stack의 맨 위에 저장된 객체를 반환. pop()과 달리 Stack에서 객체를 꺼내지는 않는다 (비었을 때는 EmptyStackException 발생) Object pop() Stack의 맨 위에 ..

TIL 정리_18

컬렉션 여러 객체(데이터)를 모아놓은 것을 의미 프레임 워크 표준화, 정형화 된 체계적인 프로그래밍 방식 컬렉션 프레임웍 (Collections Framework) 컬렉션을 다루기 위한 표준화된 프로그래밍 방식 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공 java.util패키지에 포함 컬렉션 클래스 다수의 데이터를 저장할 수 있는 클래스 (Vector, ArrayList, HashSet) 핵심 인터페이스 인터페이스 특징 List 순서가 있는 데이터의 집합, 데이터의 중복을 허용한다 구현 클래스 : ArrayList, LinkedList, Stack, Vector 등 Set 순서를 유지하지 않는 데이터의 집한, 데이터의 중복을 허용하지 않는다 예)양의 정수 집합, 소수의 집합 구현 클래스 :..

TIL 정리_17

java.time패키지 패키지 설명 java.time 날짜와 시간을 다루는데 필요한 핵심 클래스들을 제공 java.time.chrono 표준(ISO)이 아닌 달력 시스템을 위한 클래스들을 제공 jave.time.format 날짜와 시간을 파싱하고, 형식화하기 위한 클래스들을 제공 jave.time.temporal 날짜와 시간의 필드(field)와 단위(unit)를 위한 클래스들을 제공 jave.time.zone 시간대(time-zone)와 관련된 클래스들을 제공 위 패키지에 속한 클래스들은 String 클래스처럼 불변이다 Calendar와 다르게 날짜와 시간을 별도의 클래스로 분리했다 LocalDate + LocalTime -> LocalDateTime LocalDateTime+시간대 -> ZonedDa..

TIL 정리_16

java.util.Date; 날짜와 시간을 다룰 목적으로 만들어진 클래스 Date의 메서드는 거의 deprecated(앞으로 사용하지 않음)됐지만, 여전히 쓰이고 있다 java.util.Calendar; Date 클래스를 개선한 새로운 클래스 여전히 단점이 존재한다 java.time 패키지 Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공한다 (JDK1.8) Calendar 클래스 추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다 Calendar cal = Calendar.getInstance(); //추상클래스인 Calendar는 인스턴스를 생성x get()으로 날짜와 시간 필드 가져오기 : int get(int field) int thisYear = cal...

TIL 정리_15

유용한 클래스 java.util.Objects클래스 Object클래스의 보조 클래스 모든 메서드가 'static'이다 객체의 비교나 널 체크에 유용하다 isNull() - null이면 true 아니면 false nonNull() null이 아니면 true requireNonNull() 해당 객체가 널이 아닌경우에 사용 매개변수의 유효성 검사없이 requireNonNull() 호출 void setName(String name) { if(name == null) throw new NullPointerException("name must not be null."); this.name = name; } void setName(String name) { this.name = Objects.requireNonNul..

TIL 정리_14

래퍼(wrapper)클래스 객체가 아닌 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스 public final class Integer extends Number implements Comparable { private int value; } 래퍼클래스의 생성자는 char -> Character int -> Integer 이 2개를 제외하고는 대문자로만 바꾸면 된다 Number클래스 숫자와 관련된 래퍼 클래스들은 모두 Number클래스의 자손이다 기본형 외에도 BigInteger과 BigDecimal이 포함되어 있다 문자열을 숫자로 변환하기 문자열을 숫자로 변환할 때는 아래의 방법 중 하나를 사용한다 int I = new Integer(“100”).intValue(); //floatValue(), l..