분류 전체보기 (94) 썸네일형 리스트형 오버라이딩 class Car{ int wheelDrive; public Car(int wheelDrive) { this.wheelDrive = wheelDrive; } void drive(){ System.out.println("기름을 써서 출발 구동은?= " + this.wheelDrive); } } class EvCar extends Car{ int chargeEV; public EvCar(int wheelDrive, int chargeEV) { super(wheelDrive); this.chargeEV = chargeEV; } @Override void drive(){ System.out.println("전기를 써서 출발 " + "전기충전량= " + this.chargeEV + " 구동은?= " + this... 인터페이스 인터페이스를 활용하면 객체지향을 조금 더 편리하게 구현할 수 있다. public interface Car { void move(); } public class FastCar implements Car { @Override public void move() { System.out.println("빠르게 달립니다."); } } public class SnowCar implements Car { @Override public void move() { System.out.println("겨울에 잘 달립니다."); } } public class SuperCar implements Car { @Override public void move() { System.out.println("슈퍼하게 달립니다."); } } .. [프로그래머스] 최댓값 만들기 (1) import java.util.ArrayList; import java.util.Arrays; import java.util.stream.Collectors; class Solution { public int solution(int[] numbers) { int answer = 0; ArrayList arrayList = Arrays.stream(numbers).boxed().collect(Collectors.toCollection(ArrayList::new)); for (int i = 0; i < arrayList.size() - 1; i++) { for (int j = i + 1; j < arrayList.size(); j++) { int element = arrayList.get(i) * array.. [프로그래머스] 구슬을 나누는 경우의 수 문제를 보자마자 팩토리얼 재귀함수로 구하면 된다고 생각했었다. class Solution { public int solution(int balls, int share) { if (balls == share) return 1; return makeFactory(balls) / (makeFactory(balls - share) * makeFactory(share)); } public int makeFactory(int num) { if (num == 0) { return 1; } return num * makeFactory(num - 1); } } } - 그런데 이렇게 하니까 안되는 경우가 있었음 - 인터넷 찾아보니 int 범위를 넘는 케이스가 존재하기 때문에 어쩔 수가 없음 - 4바이트의 메모리가 할당되며.. 메소드 레퍼런스 1. 메소드 레퍼런스(Method References) Consumer func = text -> System.out.println(text); func.accept("Hello"); Consumer func = System.out::println; func.accept("Hello"); Static 메소드 레퍼런스 Instance 메소드 레퍼런스 Constructor 메소드 레퍼런스 2. Static 메소드 레퍼런스 public class Example { public static void main(String[] args) { Executable exe = text -> Printer.printSomething(text); Executable exe2 = Printer::printSomething; .. 람다 표현식 package section_1; import java.util.function.*; public class Foo { public static void main(String[] args) { Foo foo = new Foo(); foo.run(); } private void run() { int baseNumber = 10; // 로컬 클래스 - 쉐도잉 class LocalClass { void printBaseNumber() { int baseNumber = 11; System.out.println(baseNumber); } } // 익명 클래스 - 쉐도잉 Consumer integerConsumer = integer -> { int baseNumber1 = 11; System.out.println(.. Java의 함수형 인터페이스 import java.util.function.*; public class Foo { public static void main(String[] args) { Function plus10 = (i) -> i + 10; // UnaryOperator plus11 = (i) -> i + 11; Function multiply2 = (i) -> i * 2; // 고차함수 생성 후 실행 Function multiply2AndPlus10 = plus10.compose(multiply2); System.out.println(multiply2AndPlus10.apply(10)); // 고차함수 앞에서 부터 실행 System.out.println(plus10.andThen(multiply2).apply(10)); //.. 함수형 인터페이스와 람다 표현식 함수형 인터페이스 - 추상 메서드를 딱 하나만 가지고 있음 - Single Abstract method 인터페이스 - @FunctionInterface 어노테이션을 가지고 있는 인터페이스 @FunctionalInterface public interface RunSomething { int doIt(int num); } 람다 표현식 - 함수형 인터페이스의 인스터를 만드는 방법으로 쓰일 수 있음 - 코드 줄이기 가능 - 메소드의 매개변수, 리턴 타입, 변수를 만들어 사용 가능 public class Foo { public static void main(String[] args) { RunSomething runSomething = num -> num + 10; } } 자바에서 함수형 프로그래밍 - 함수를 F.. 이전 1 2 3 4 5 6 7 8 ··· 12 다음