목록자바 (13)
가자미의 개발이야기
1. 날짜 시각 관련 클래스 -시각을 표현하는 Instant, 시간을 표현하는 Duration(시간의 차이) import java.time.Duration; import java.time.Instant; public class StreamPtc { public static void main(String[] args) { Instant start = Instant.now();//현재 시각 정보를 담음 System.out.println("시작 : "+ start.getEpochSecond()); Instant end = Instant.now(); System.out.println(" 끝 : "+end.getEpochSecond()); Duration between = Duration.between(start..
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 =..
-@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. 클래스 변수(스태틱 변수) 모든 클래스에서 공유하기 위해 클래스에 속하지 않는 독립적인 변수라고 생각하면 편한다. 하지마 자바로 코딩할 때 그런 독립적인 변수도 클래스 안에 써줘야 하니, 이를 구분하기 위해 앞에 static이라고 붙이는 것이다. 즉 static 변수는 자신이 몸담고 있는 클래스와 관련 없는 독립적인 존재이다. 하지만 한가지 지켜줘야 하는 것이 있는데, 자신이 몸담고 있는 클래스가 지정한 접근 수준의 접근을 허용한다는 점이다. 즉 인스턴스의 이름으로 외부에서 접근 가능한 경우도 생기게 된다. 따라서 static변수에 접근할 때는 인스턴스의 이름으로 접근하기보다 클래스의 이름으로 접근해주는게 좋다.(인스턴스와 구분하기 위해) b. 스태틱 메소드 전체적인 특징은 앞서 설명한 클래스 변수..