목록Java/자바 기본 문법 (68)
가자미의 개발이야기
1. 스트림 생성과 연결 -스트림을 생성과 동시에 원소를 전달하는 of -static Stream of(T....values) --double, int, long 형 스트림에도 오버로딩 되어 있음. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class StreamPtc { public static void main(String[] args) { Stream.of(11,22,33,44)//4개의 값으로 스트림 생성(원소 4개) .forEach(n->System.out.print(n+"\t")); Syste..
스트림이란 데이터를 일렬로 정렬한 상태를 의미한다. 이렇게 정렬된 데이터를 파이프에 통과시켜 우리가 원하는 결과를 얻고자 할 때 쓰인다. 이때 파이프는 중간연산과 최종연산으로 나뉘는데, 최종연산은 마지막에 오는 파이프로, 다른 것과 순서가 바뀔 수 없고, 중간연산은 최종연산을 제외한 모든 파이프를 의미한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import java.util.Arrays; import java.util.stream.IntStream; public class StreamPtc { public static void main(String[] args) { int[] ar = {1,2,3,4,5}; //학습용 코드(실효성 x) IntStream stm1..
-Optional 클래스를 왜 사용하는가? --if문을 여러번 써야하는 상황 중 일부를 쉽게 대체할 수 있게 하고자 함. -기본적 활용법 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import java.util.Optional; public class OptionalPractice { public static void main(String[] args) { Optional os1 = Optional.of(new String("Toy1")); //of는 null인 인스턴스가 올 수 없음 Optional os2 = Optional.ofNullable(new String("Toy2")); //ofNullable은 null인 인스턴스가 올 수 있음. if(os1.isPresent..
-메소드 참조는 특수한 상황일 때, 람다식을 좀 더 줄일 수 있는 표현이다. -일종의 약속이니 예제에서 약속을 파악하자. -static 메소드 참조 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import java.util.Arrays; import java.util.List; import java.util.ArrayList; import java.util.Collections; interface Consumer{ void accept(T t); } public class ArrangeList { public static void main(String[] args) { List ls = Arrays.asList(1, 3, 5, 7, 9); ls =..
Predicate -boolean test(T t) 전달인자를 근거로 참 거짓반환 Supplier -T get() 메소드 호출 시 무엇인가를 제공 Consumer void accept(T t) 무엇인자를 받아 들이기만 함 Function R apply(T t) 입출력 출력이 있음 -Predicate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import java.util.List; import java.util.function.Predicate; import java.util.Arrays; public class Ramda { public static int sum(Predicate p, List lst) { int s =0; f..
-@FunctionalInterface --함수형 인터페이스가 맞는지 확인하는 기능 -람다식의 제네릭 1 2 3 4 5 6 7 8 9 10 11 @FunctionalInterface interface Calculate { T cal(T a, T b); } public class Ramda { public static void main(String[] args) { Calculate c1=(a, b)->a+b; Calculate c2=(a,b)->a-b; } } Colored by Color Scripter cs
-함수형 인터페이스?(Functional Interface?) --추상메소드가 하나 있는 인터페이스 --람다식을 위한 전제 -매개변수가 있고 반환하지 않는 람다식 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 interface Printable{ void print(String s); } public class Ramda { public static void main(String[] args) { Printable p; //줄임없는 표현 p=(String s)->{System.out.println(s);}; //메소드 코드가 한줄 일때만 중괄호 생략 p=(String s)->System.out.println(s); //매개변수 형 생략 p=(s)->Sys..
-익명클래스를 최대한 줄이는 것을 람다라고 생각해보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 interface printable{ void print(); } //익명클래스의 경우. printable prn = new printable{ void print(){ System.out.println("내용출력~"); }; } //람다의 경우 printable prn = (s)->{System.out.println("내용출력~");}; //람다의 매개변수 전달 void printer(printable prn){}; void printer((s)->{System.out.println("내용출력~");}; Colored by Color Scripter cs 람다는 인터페..
-네스티드 클래스 : 클래스 안에 정의된 클래스 --static 여부에 따라 스태틱 네스티드 클래스/이너 클래스로 구분. ---이너 클래스도 멤버/로컬/익명 클래스로 구분 -스태틱 네스티드 클래스(Outer 클래스와 별 상관 없음) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class Outer{ private static int num =0; //외부 접근이 불가능한 변수지만 nested1, nested2로는 접근 가능 static class Nested1{ void add(int n) {num+=n;} } static class Nested2{ int get() {return num;} } } public class StaticNested { public stat..
a. 애너테이션 소스코드에 대한 문서를 따로 만들지 않고 소스코드와 문서를 하나의 파일로 관리하기 위함 표준 애너테이션 애너테이션 설명 @Override 메서드가 오버라이딩하는 것이라 알림 @Deprecated 사용하지 않는 것을 권장하는 대상 @SuppressWarnings 특정 경고 메시지가 나타나지 않게 함 @SafeVarargs 제네릭 타입의 가변인자를 사용 @FunctionalInterface 함수형 인터페이스라는 것을 알림 @Native native메서드에서 참조되는 상수 앞에 붙임 @Target 애너테이션이 적용가능한 대상을 지정. (메타) @Documented 애너테이션 정보가 javadoc으로 작성된 문서에 포함되게함 (메타) @Inherited 애너테이션이 자손 클래스에 상속되도록 함 ..