본문 바로가기

java86

[Java] 시각과 날짜의 처리 Instant 클래스 Instant now = Instant.now(); now.getEpochSecond(); Instant 클래스는 타임 라인의 특정 시점을 표현하는 클래스이다. 위의 코드 처럼 now 메서드를 사용하면 현재 시각 정보를 담은 인스턴스를 생성할 수 있다. '1970-01-01 00:00:00' 을 표준 자바 epcoh 이라고 한다. getEpcohSecond 메서드를 사용하면 표준 자바 epoch 을 기준으로 지나온 시간을 초 단위로 계산한 결과를 반환한다. Duration 클래스 Instant start = Instant.now(); ... Instant end = Instant.now(); Duration between = Duration.between(start, end); Sy.. 2022. 9. 24.
[Java] Stream 스트림(Stream) int[] arr = {1, 2, 3, 4, 5} /* example1 */ IntStream stm1 = Arrays.stream(arr); // 스트림 생성 IntStream stm2 = stm1.filter(n -> n%2 == 1);// 중간 연산 int sum = stm2.sum(); // 최종 연산 /* example2 */ int sum = Arrays.stream(arr) // 스트림 생성 .filter(n -> n%2 == 1) // 중간 연산 .sum(); // 최종 연산 Java 에서 데이터의 흐름을 생성할 수 있는데, 이러한 흐름을 스트림(Stream)이라고 한다. 배열이나 컬렉션 인스턴스를 다룰 때 for문이나 iterator를 사용하여 접근하였다. Java .. 2022. 9. 23.
[Java] Optional 클래스 null 과 NPE(NullPointerException) null은 참조형 타입의 기본 값이다. 어떠한 데이터 타입으로 구분되지 않는 모든 참조값에 할당될 수 있는 특수한 값이다. null이 저장된 참조변수를 대상으로 메서드 호출 등의 코드를 수행할 경우 예외가 발생하는데 그 예외를 NPE(NullPointerException)이라고 한다. NPE가 문제가 되는 이유는 컴파일 시점에는 예외가 발생하지 않다가 런타임 때 발생하기 때문이다. 기존에 NPE를 막기위해서는 null 여부를 체크하는 코드를 추가했다. String test = null; int len = test.length(); // NPE 발생 if (String != null) {// null check int len = test.lengt.. 2022. 9. 15.
[Java] 메서드 참조(Method Reference) 메서드 참조란 이미 정의되어 있는 메서드를 사용해 람다식을 대신하는 것을 의미한다. 메서드 참조의 유형은 정적 메서드 참조, 인스턴스 메서드 참조, 생성자 참조로 크게 3가지가 있다. 인스턴스 메서드 참조는 참조를 통한 인스턴스 메서드 참조와 클래스 이름을 통한 인스턴스 메서드 참조로 구분할 수 있다. 정적(static) 메서드 참조 List list = new ArrayList(Arrays.asList(1, 3, 5, 7, 9)); // public static void reverse(List list) Consumer c = l -> Collections.reverse(l);// 람다식 c.accept(list) Consumer c = Collections::reverse;// 메서드 참조 c.acc.. 2022. 9. 15.
[Java] 기본 함수형 인터페이스(Functional Interface) Java8에서 미리 정의해 놓은 함수형 인터페이스들을 알아보자. 다음 인터페이스들은 java.util.function에 정의되어있다. Predicate Predicate 인터페이스 내에는 boolean test(T t) 라는 추상 메서드가 존재한다. boolean test(T t)는 전달된 인자를 판단해 true 또는 false를 반환해야 하는 상황에서 사용한다. public static int sum(Predicate p, List lst) { int s = 0; for(int n : lst) { if(p.test(n)) s += n; } return s; } public static void main(String[] args) { List list = Arrays.asList(1, 5, 7, 9, 1.. 2022. 9. 13.
[Java] 익명 클래스(Anonymous Class)와 람다식(Lambda Expression) 익명클래스(Anonymous Class) interface Printable { void print(); } class Printer implements Printable { public void print(String s) { System.out.println(s); } } class Example { public static void main(String[] args) { Printable prn = new Printer(); prn.print("hi"); } } 위 코드에서 Printer 클래스를 보자. Printer 클래스의 정의와 Printer 인스턴스의 생성이 분리되어 있다. 하지만 '익명 클래스'의 형태를 사용하면 클래스의 정의와 인스턴스 생성을 하나로 묶을 수 있다. class Exampl.. 2022. 9. 13.