Nội dung chính trong chương: A. Why Lambdas??? B. The syntax of Lambda Expressions C. Functional interfaces A. Why Lambdas??? Quan sát 3 ví dụ sau: Ví dụ 1: Tạo một lớp Worker, cấp phát cho một đối tượng của lớp đó 1 vùng nhớ, thiết lập cho nó một luồng riêng class Worker implements Runnable { public void run() { for (int i = 0; i < 1000; i++) doWork();… }…} Worker w = new Worker();new Thread(w).start();
CHƯƠNG 1: LAMBDA EXPRESSIONS Họ tên MSSV Giáo viên hướng dẫn : Nguyễn Đại Phong : 20111979 : Nguyễn Hồng Quang 1 Nội dung I. Mô tả yêu cầu II. Nội dung chính trong chương I III. Bài tập 2 I. Mô tả yêu cầu A. Mô tả yêu cầu B. Nội dung chính trong phần lý thuyết C. Nội dung bài tập 3 I. Mô tả yêu cầu A. Mô tả yêu cầu Yêu cầu: Làm báo cáo Trình bày slide phần lý thuyết chương 1 (1.1 1.3) Tự đặt ra 3 câu hỏi trắc nghiệm liên quan đến phần mình làm 4 I. Mô tả yêu cầu B. Nội dung chính trong phần lý thuyết Why Lambdas??? The Syntax of Lambda Expressions Functional Interfaces 5 I. Mô tả yêu cầu C. Nội dung bài tập Tự đặt ra 3 câu hỏi trắc nghiệm liên quan đến phần mình làm và trong mỗi câu có 4 đáp án 6 II. Nội dung chính trong A.chương Why Lambdas??? I B. The syntax of Lambda Expressions C. Functional interfaces 7 II. Nội dung chính trong A. Why Lambdas??? chương I Quan sát 3 ví dụ sau: Ví dụ 1: Tạo một lớp Worker, cấp phát cho một đối tượng của lớp đó 1 vùng nhớ, thiết lập cho nó một luồng riêng class Worker implements Runnable { public void run() { for (int i = 0; i < 1000; i++) doWork();… }… } Worker w = new Worker(); new Thread(w).start(); 8 II. Nội dung chính trong A.chương Why Lambdas??? I Quan sát 3 ví dụ sau: Ví dụ 2: Tạo một lớp sắp xếp xâu theo độ dài của nó class LengthComparator implements Comparator { public int compare(String first, String second) { return Integer.compare(first.length(), second.length()); } } Arrays.sort(strings, new LengthComparator()); 9 II. Nội dung chính trong A.chương Why Lambdas??? I Quan sát 3 ví dụ sau: Ví dụ 3: Tạo một button để gọi lại hoạt động trong một phương thức của một lớp thực thi việc lắng nghe các hoạt động của giao diện button.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println("Thanks for clicking!"); } } 10 II. Nội dung chính trong A.chương Why Lambdas??? I Ta có thể thấy một số đặc điểm: Muốn thêm chức năng khác nữa ta phải tạo thêm một phương thức. Có khi cả chương trình ta chỉ sử dụng phương thức đó 1 lần Lập trình viên phải code mệt hơn Trình biên dịch chạy tốn tài nguyên hơn vì còn phải rà soát lỗi cú pháp trong từng dòng 11 II. Nội dung chính trong B.chương The syntax of I Lambda Expressions (arguments) (body) Ví dụ (String first, String second) { if (first.length() < second.length()) return -1; else if (first.length() > second.length()) return 1; else return 0; } () { for (int i = 0; i < 1000; i++) doWork(); } 12 II. Nội dung chính trong B.chương The syntax of Lambda Expressions I Từ đó ta có thể suy ra cấu trúc của biểu thức lambda: Biểu thức có thể cần hoặc không cần, cần nhiều tham số Kiểu dữ liệu của tham số có thể được định nghĩa rõ ràng hoặc được suy đoán từ ngữ cảnh Tham số đặt trong các dấu ngoặc đơn phải được phân cách nhau bằng dấu “phẩy” Nếu kiểu dữ liệu của tham số không rõ ràng thì dấu ngoặc đơn là không bắt buộc Phần thân (body) của biểu thức có thể có hoặc không có hoặc có một khối lệnh Nếu phần thân (body) chỉ là một dòng mã lệnh thì dấu ngoặc đơn là không cần thiết 13 II. Nội dung chính trong C. Functional interfaces chương I Chúng ta cũng có thể thêm 1 biểu thức lambdas mọi nơi trong các phương thức của 1 lớp giao diện. Ví dụ: public class Main{ Processor stringProcessor = (String str) str.length(); String name = “Java Lambda”; int length = stringProcessor.getStringLength (name); } } @FunctionalInterface interface Processor{ int getStringLength(String str); } 14 III. Bài tập I. Câu hỏi trắc nghiệm Câu 1: Tại sao java lại bổ sung thêm biểu thức lambda vào??? A. Họ cảm thấy thích thú với nó thì họ thêm vào B. Để giúp cho lập trình viên dễ dàng hơn trong khi lập trình và để chương trình dễ compiler hơn C. Do Sun muốn thu hút thêm lập trình viên java D. Do Oracle muốn thu hút thêm lập trình viên java 15 III. Bài tập I. Câu hỏi trắc nghiệm Câu 2: Trong các câu sau, câu nào viết sai cú pháp của biểu thức lambda. A. B. C. D. (int a; int b) { return a+b;} () system.out.println(“hello world”); (String s) { system.out.println(s);} () 42; 16 III. Bài tập I. Câu hỏi trắc nghiệm Câu 3: Phát biểu nào là đúng A. Ta cũng có thể thêm 1 biểu thức lambdas mọi nơi trong các phương thức của 1 lớp giao diện. B. Ta chỉ được thêm biểu thức lambda vào hàm main C. Ta chỉ được thêm biểu thức lambda vào những phương thức nào được public D. Ta chỉ được thêm vào comment 17 III. Bài tập I. Câu hỏi trắc nghiệm Đáp án đúng của cả 3 câu trắc nghiệm: Câu 1 – B Câu 2 – A Câu 3 – A 18 [...]... Họ cảm thấy thích thú với nó thì họ thêm vào B Để giúp cho lập trình viên dễ dàng hơn trong khi lập trình và để chương trình dễ compiler hơn C Do Sun muốn thu hút thêm lập trình viên java D Do Oracle muốn thu hút thêm lập trình viên java 15 III Bài tập I Câu hỏi trắc nghiệm Câu 2: Trong các câu sau, câu nào viết sai cú pháp của biểu thức lambda A B C D (int a; int b) { return a+b;} () system.out.println(“hello... chính trong A.chương Why Lambdas??? I Ta có thể thấy một số đặc điểm: Muốn thêm chức năng khác nữa ta phải tạo thêm một phương thức Có khi cả chương trình ta chỉ sử dụng phương thức đó 1 lần Lập trình viên phải code mệt hơn Trình biên dịch chạy tốn tài nguyên hơn vì còn phải rà soát lỗi cú pháp trong từng dòng 11 II Nội dung chính trong B.chương The syntax of I Lambda Expressions (arguments)... thức lambdas mọi nơi trong các phương thức của 1 lớp giao diện Ví dụ: public class Main{ Processor stringProcessor = (String str) str.length(); String name = Java Lambda ; int length = stringProcessor.getStringLength (name); } } @FunctionalInterface interface Processor{ int getStringLength(String str); } 14 III Bài tập I Câu hỏi trắc nghiệm Câu 1: Tại sao java lại bổ sung thêm biểu thức lambda. .. else if (first.length() > second.length()) return 1; else return 0; } () { for (int i = 0; i < 1000; i++) doWork(); } 12 II Nội dung chính trong B.chương The syntax of Lambda Expressions I Từ đó ta có thể suy ra cấu trúc của biểu thức lambda: Biểu thức có thể cần hoặc không cần, cần nhiều tham số Kiểu dữ liệu của tham số có thể được định nghĩa rõ ràng hoặc được suy đoán từ ngữ cảnh Tham số đặt trong... system.out.println(s);} () 42; 16 III Bài tập I Câu hỏi trắc nghiệm Câu 3: Phát biểu nào là đúng A Ta cũng có thể thêm 1 biểu thức lambdas mọi nơi trong các phương thức của 1 lớp giao diện B Ta chỉ được thêm biểu thức lambda vào hàm main C Ta chỉ được thêm biểu thức lambda vào những phương thức nào được public D Ta chỉ được thêm vào comment 17 III Bài tập I Câu hỏi trắc nghiệm Đáp án đúng của cả