Programming/Java 기초

JAVA Basic) 내부 클래스 - 연습문제

반응형

목차

     


     

    Q1.

    지역 내부 클래스에서 외부 클래스 메서드의 지역 변수를 사용할 수 있지만, 그 값을 변경하면 오류가 발생한다.
    이때 사용하는 지역 변수는 [  ]변수가 되기 때문이다.

     

    Q2.

    내부 클래스 중 클래스 이름 없이 인터페이스나 추상 클래스 자료형에 직접 대입하여 생성하는 클래스를 [  ]라고 한다.

     

    Q3.

    자바에서 제공하는 함수형 프로그래밍 방식으로 인터페이스의 메서드를 직접 구현하는 코드를 [  ]이라고 한다.

     

    Q4.

    람다식으로 구현할 수 있는 인터페이스는 메서드를 하나만 가져야 한다. 이러한 인터페이스를 [  ]라고 한다.

     

    Q5.

    다음과 같이 두 정수를 매개변수로 하는 메서드가 인터페이스에 정의되어 있다. 두 정수의 합을 반환하는 람다식을 구현하고 호출해보자.

    package lambda;
    
    public interface Calc {
    	public int add(int num1, int num2);
    }

     

    Q6.

    자바에서 자료를 추상화하여 여러 자료형의 자료를 동일하게 처리할 수 있도록 제공하는 클래스를 [  ]이라고 한다.

     

    Q7.

    다음과 같이 도서관에 책이 있다.

    class Book {
    	private String name;
    	private int price;
    	
    	public Book(String name, int price) {
    		this.name = name;
    		this.price = price;
    	}
    }
    
    public class LibraryTest {
    	public static void main(String[] args) {
    		List<Book> bookList = new ArrayList<>();
    		
    		bookList.add(new Book("자바", 25000));
    		bookList.add(new Book("파이썬", 15000));
    		bookList.add(new Book("안드로이드", 30000));
    	}
    }

    위와 같을 때 스트림을 활용해 다음처럼 책 목록을 출력하세요.

    - 모든 책의 가격의 합
    - 책의 가격이 20,000원 이상인 책의 이름을 정렬하여 출력

     

     

     

     

     

     

     

     

     

    정답:

    Q1: final

    Q2: 익명 내부 클래스

    Q3: 람다식

    Q4: 함수형 인터페이스

    Q5:

    public class Q5 {
    	public static void main(String[] args) {
    		Calc sum = (s, v) -> s + v;
    		System.out.println(sum.add(30, 20));
    	}
    }

     

    Q6: 스트림

    Q7:

    import java.util.ArrayList;
    import java.util.List;
    
    class Book {
    	private String name;
    	private int price;
    	
    	public Book(String name, int price) {
    		this.name = name;
    		this.price = price;
    	}
        
    	//getter 추가
    	public String getName() {
    		return name;
    	}
    	public int getPrice() {
    		return price;
    	}
    }
    
    public class LibraryTest {
    	public static void main(String[] args) {
    		List<Book> bookList = new ArrayList<>();
    		
    		bookList.add(new Book("자바", 25000));
    		bookList.add(new Book("파이썬", 15000));
    		bookList.add(new Book("안드로이드", 30000));
    		
    		System.out.println("==모든 책 가격의 합==");
    		int total = bookList.stream().mapToInt(p -> p.getPrice()).sum();
    		System.out.println(total);
    		
    		System.out.println("==20,000원이 넘는 책 이름 정렬==");
    		bookList.stream().filter(p1 -> p1.getPrice()>=20000).map(p1 -> p1.getName()).sorted().forEach(b1 -> System.out.println(b1));
    	}
    }

    반응형