2020-12-22 기존에 Consumer와 Supplier 인터페이스는 매개 값만 있고 리턴 값은 없거나 매개 값은 없고 리턴 값만 있는 경우였다. 하지만 Operator의 경우 매개변수를 받으면서 동시에 리턴값도 가지고 있는 인터페이스다. 구체적인 사용법을 알아보자. 가장 기초적인 int형 Operator인 inIntBinaryOperator를 활용해 구체적인 예를 작성하였다. 코드는 아래와 같다. package LambdaOperator; import java.util.function.IntBinaryOperator; public class main { private static int[] scores = {60, 70, 80}; public static int check (IntBinaryOper..
2020-12-21 우선 Consumer의 함수적 인터페이스를 알아보자. 이름에서도 느껴지듯이 매개 값을 받아 소비만 하고 리턴 값을 가지지 않는다. 이러한 매개 값을 받는 메서드로는 accept ()를 가지고 있으며, 사용법은 아래와 같다. package LambdaConsumer; import java.util.function.BiConsumer; import java.util.function.Consumer; public class main { public static void main(String[] args) { Consumer consumer = t ->{ System.out.println(t +"이다."); }; //매개값만 받고 리턴값은 없는 인터페이스 consumer.accept("kin..
2020-12-20 제네릭 타입의 클래스와 인터페이스에서도 상속과 구현이 가능하다. 구체적인 예를 들면서 살펴보자. 우선 제네릭 타입의 클래스 간의 상속관계를 알아보자. package GenericExtends; public class Parent { //제넥릭타입 A/B를 가지는 Parent 클래스 private A name; private B age; public A getName() { return name; } public void setName(A name) { this.name = name; } public B getAge() { return age; } public void setAge(B age) { this.age = age; } } 위의 클래스는 부모 클래스로 제네릭 타입 A와 B를 선..
2020-12-18 자바를 처음 공부하다 보면, 누구나 한 번쯤 주사위 확률 예제를 봤을 것이다. 이 경우 Math 클래스의 random();이라는 메서드를 사용해서 0 ~ 1의 난수를 얻어 이후 정수를 더해 Integer값을 얻어 냈을 것이다. 그렇다면 double 난수가 아닌 int / long /float와 같은 난수뿐 아니라, boolean 난수를 얻으려면 어떻게 해야 할까? 바로 Random클래스를 사용하면 이와 같은 문제를 쉽게 해결할 수 있다. 아래의 예제를 살펴보자. package tRandom; import java.util.Random; public class main { public static void main(String[] args) { Random ran = new Random..
2020-12-16 Date 타입 / 타입 이름에서도 느껴지듯이 날짜를 받는 속성으로써 사용된다. 또한 java.util.Date에 속해 있어 import를 시켜주지 않으면, 컴파일 상에서 오류가 발생하게 되는 점도 알아두자. 사용법은 간단하며, 아래와 같다. package tDate; import java.util.Date; public class main { public static void main(String[] args) { Date day = new Date(); System.out.println(day); //현재날짜 / 시간을 출력할 수 있음 //문자열을로 바꾸고 싶으면 String 객체에 toString으로 담아주면됨. 위와 같이 day라는 객체를 선언해준 후 출력해주면, 아래와 같이 현..
2020-12-14 StringBuilder는 문자열을 버퍼에 담에 그 안에서 추가 수정 삭제 작업을 할 수 있도록 도와주는 클래스이다. 하지만 이와 같은 클래스가 왜 필요한지 궁금할 수가 있다. 아래의 예제 코드를 가지고 왜 필요한지 이야기해보자. String str = "ABC"; str += "D"; 몇몇의 사람들은 위의 코드와 같이 따로 StringBuilder를 사용하지 않고 기존 String 변수에 새로운 값을 넣어주면 쉽게 해당 문자열을 변경할 수 있는 거 아닌가 라고 생각할 수 있다. 물론 해당 방법으로도 문자열을 수정할 수 있지만, 여기에는 큰 단점이 있다. 바로 String은 연산과 같은 과정을 통해 새로운 문자열로 변경될 경우 새로운 스트링 객체로 리턴이 된다는 것이다. 이러한 문제는..