1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Cơ Bản Về Lập Trình Java

25 457 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Chương 1: Giới thiệu về Java 1. Lịch sử hình thành và phát triển 2. Các đặc điểm của Java 3. Các phiên bản của Java 4. Các bước viết và chạy thử một chương trình Java 5. Các thành phần của chương trình Java 6. Cấu trúc chung của một chương trình Java PHẦN I CƠ BẢN VỀ LẬP TRÌNH JAVA GV. Ngô Công Thắng Bộ môn Công nghệ phần mềm Khoa Công nghệ thông tin Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 2. Các đặc điểm của Java 1. Lịch sử hình thành và phát triển Java là một ngôn ng lập trình hướng đối được đang được ưa chuộng. Java là một ngôn ngữ mạnh ngang tầm với C++. So với C++, Java “mềm dẻo và tao nhã” hơn. Java được công bố vào năm 1990, tác giả là James Gosling và Sun Microsystems. Tên ban đầu là Oak (cây sồi) Java is simple Java is object-oriented Java is distributed Java is interpreted Java is robust Java is secure Java is architecture-neutral Java is portable Java’s performance Java is multithreaded Java is dynamic Java, 20/05/1995, Sun World HotJava: Trình duyệt Web hỗ trợ Java đầu tiên JDK Evolutions J2SE, J2ME, and J2EE Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 2 3 đơn giản hướng đối tượng phân tán thông dịch mạnh mẽ bảo mật không phụ thuộc HĐH khả chuyển hiệu quả cao đa luồng linh động Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 4 3. Các phiên bản của Java JDK Editions Java Standard Edition (J2SE) JDK: Java Development Kit J2SE có thể được dùng để phát triển các ứng dụng hoặc các applet độc lập phía client (client-side). Java 1 Java Enterprise Edition (J2EE) JDK 1.02 (1995) JDK 1.1 (1996) J2EE có thể được dùng để phát triển các ứng dụng phía server (server-side) như các Java servlet và Java ServerPages. Java 2 Java Micro Edition (J2ME). SDK 1.2 (JDK 1.2, 1998) SDK 1.3 (JDK 1.3, 2000) SDK 1.4 (JDK 1.4, 2002) SDK 5.0 (JDK 1.5, 2004) SDK 6.0 (JDK 1.6, 2007) Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng J2ME có thể được sử dụng để phát triển các ứng dụng cho các thiết bị di động như ĐTDĐ. Các chương trình ví dụ trong môn học Lập trình Java viết trên J2SE. 5 4. Các bước viết và chạy thử một chương trình Java Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 6 Quá trình tạo và chạy một chương trình java Tạo/Sửa Source Code Soạn thảo chương trình bằng một trình soạn thảo text hoặc trong IDE. Biên dịch chương trình Chạy chương trình Source Code Compile Source Code vd: javac Welcome.java Nếu có lỗi Bytecode bytecode Run Bytecode vd: java Welcome Kết quả Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 7 Nếu có lỗi hoặc kết quả Bài sai giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 8 Một chương trình Java đơn giản // Chuong trinh dua ra dong chu Welcome to Java! package ch01; public class Welcome { public static void main(String[] args) { System.out.println("Welcome to Java!"); } } Soạn thảo chương trình: Soạn thảo chương trình (Notepad, Wordpad…) Ghi tệp với tên có đuôi .java Ví dụ: Ghi tệp Welcome.java vào thư mục C:\javapro Biên dịch: Trên cửa sổ DOS cd\ ↵ cd javapro ↵ javac Welcome.java ↵ Chú ý: Đặt tên tệp phải trùng với tên lớp, khi gõ lệnh biên dịch từ DOS thì tên tệp phải giống hệt tên lớp (cả hoa và thường). Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng Tạo, biên dịch, chạy chương trình trên DOS Chạy: java Welcome ↵ 9 Thiết lập biến môi trường Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 10 Thiết lập biến môi trường Để biên dịch và chạy các chương trình Java từ bất kỳ thư mục nào trong DOS ta phải thiết lập biến môi trường PATH như sau: Kích phải chuột vào My Computer -> Properties -> Advanced -> Environment Variables Chọn biến Path -> Edit -> Gõ thêm đường dẫn tới thư mục Bin của JDK. Ví dụ: C:\Program Files\Java\jdk1.6.0_02\bin Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 11 Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 12 5. Các thành phần của một chương trình Java Thiết lập biến môi trường Comments (Chú giải, như C++) Reserved words (Từ khóa) Modifiers (Như C++, ví dụ: public, private, static) Statements (Câu lệnh, như C++) Blocks (Khối lệnh, như C++) Classes (Lớp, như C++) Methods (Phương thức, như hàm thành viên trong C++) main method (Phương thức chính, như hàm main() trong C++) Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 13 Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 6. Cấu trúc chung của một chương trình Java main Method main method đóng vai trò là chương trình. Mọi chương trình Java phải có main method, nó là điểm khởi đầu khi thực hiện chương trình. Dạng thức của main method: public static void main(String[ ] args) { // Statements; } Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 14 Trình thông dịch Java coi chương trình Java như một lớp. Mọi chương trình Java phải có ít nhất một lớp chứa phương thức main. Tên lớp chứa phương thức main phải trùng với tên tệp chương trình. Cấu trúc chung của một chương trình Java: import Thư viện lớp (package);//#include của C++ public class TenLop //Ten lop nay la ten tep ctrinh { public static void main(String[] args) { //Các lệnh của chương trình Java để ở đây } //Dinh nghia cac phuong thuc khac } 15 Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 16 6. Cấu trúc chung của một chương trình Java Ví dụ Ví dụ: Import javax.swing.JOptionPane; public class Welcome { Trong ví dụ trên ta sử dụng phương thức showMessageDialog trong lớp JOptionPane để hiển thị thông báo trong một hộp hội thoại. JOptionPane là một trong nhiều lớp có sẵn trong hệ thống Java để có thể tái sử dụng. public static void main(String[] args) { //Hien thi chu Welcome to Java! Trong hop thoai JOptionPane.showMessageDialog(null,”Welcome to Java!”,”Chuong trinh vi du”,JOptionPane.INFORMATION_MESSAGE); } } Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 17 Phương thức showMessageDialog JOptionPane.showMessageDialog(null, "Welcome to Java!", "Example 1.2 Output", JOptionPane.INFORMATION_MESSAGE); Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 19 Bài giảng LT JAVA - Phần 1,Chương 1 GV. Ngô Công Thắng 18 Chương 2. Các kiểu dữ liệu cơ bản Chương 2. Các kiểu dữ liệu cơ bản I. Các kiểu dữ liệu cơ bản II. Khai báo biến và hằng III. Biểu thức IV. Chuyển đổi kiểu dữ liệu V. Vào/Ra dữ liệu với Java I. Các kiểu dữ liệu cơ bản 1. Các kiểu dữ liệu số 2. Kiểu ký tự 3. Kiểu logic 4. Kiểu xâu ký tự Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 1 I.1. Các kiểu dữ liệu số byte short int long float double 1 2 4 8 4 8 Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 2 I.1. Các kiểu dữ liệu số byte byte byte byte byte byte Các phép toán số học giống như C++: +, -, *, /, % Hằng số nguyên viết như bình thường Hằng số thực có thể viết theo 2 dạng: Dạng thập phân: 2.25 Dạng mũ: 2.5E3 Giống các kiểu dữ liệu số của C++ Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 3 Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 4 I.2. Kiểu ký tự I.2. Kiểu ký tự Giống như C++, được định nghĩa với từ khóa char Kiểu char có kích thước 2 byte. Một biến char có thể chứa cả ký tự ASCII và ký tự Unicode. Kiểu char có thể dùng như kiểu số. Hằng ký tự là một ký tự đặt giữa 2 dấu phẩy trên. Ví dụ: ‘A’ Hằng xâu ký tự là một dãy ký tự bất kỳ đặt giữa hai dấu nháy kép. Ví dụ: “DHNN1” Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 5 I.3. Kiểu logic (boolean) Các ký tự điều khiển: Description Escape Sequence Backspace ‘\b’ Tab ‘\t’ Linefeed ‘\n’ Carriage return ‘\r’ Backslash ‘\\’ Single Quote ‘\’’ Double Quote ‘\”’ Unicode \u0008 \u0009 \u000a \u000d \u005C \u0027 \u0022 Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 6 I.4. Kiểu xâu ký tự Khác với C++, Java đưa vào kiểu dữ liệu xâu ký tự. Kiểu xâu ký tự được định nghĩa với tên chuẩn là String. Thực ra kiểu xâu ký tự là một lớp đối tượng xâu có sẵn trong Java. Khi khai báo biến xâu ký tự có thể khởi tạo bằng một hằng xâu ký tự. Khác với C++, Java đưa thêm vào kiểu logic được định nghĩa với tên chuẩn là boolean, chỉ có 2 giá trị là true và false. Hằng boolean được viết là true và false Các phép toán logic và quan hệ giống C++. String st = “DHNN1”; Có thể dùng phép toán + và += để ghép nhiều xâu ký tự, ghép xâu ký tự với dữ liệu không phải xâu ký tự (dữ liệu số). Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 7 Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 8 Ví dụ về ghép xâu ký tự II. Khai báo biến và hằng String message = "Welcome "+"to " + "Java"; String s = "Chuong" + 2; // Chuong2 String s1 = "Hello" + 'B'; // s1 trở thành HelloB Khai báo biến và khởi tạo giá trị ban đầu cho biến giống như C++. Ví dụ: int a=100; Khai báo hằng là đặt tên cho một giá trị cụ thể. Cú pháp khai báo hằng như sau: final TenKieu TenHang = GiaTri; Ví dụ: final double PI=3.14159; Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 9 Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng III. Biểu thức IV. Chuyển đổi kiểu dữ liệu Biểu thức trong Java giống trong C++. Lệnh gán và biểu thức gán cũng giống C++. Thứ tự ưu tiên và thứ tự thực hiện các phép toán trong một biểu thức giống C++. Java có khả năng chuyển đổi kiểu tự động, quy tắc chuyển đổi kiểu tự động giống C++. Có thể ép kiểu, cú pháp ép kiểu như C++ Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 11 Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 10 12 V. Vào/Ra dữ liệu với Java V.1. Lấy dữ liệu vào từ bàn phím Để lấy dữ liệu vào từ bàn phím ta dùng phương thức showInputDialog() của lớp JOptionPane, phương thức này cho phép ta nhập dữ liệu qua hộp thoại. Dữ liệu nhận được từ hội thoại là xâu ký tự => dùng biến xâu để chứa dữ liệu nhập vào, sau đó chuyển xâu ký tự thành kiểu dữ liệu muốn nhập. Cách nhập như sau: 1. Lấy dữ liệu vào từ bàn phím 2. Đưa dữ liệu ra màn hình 3. Ví dụ: Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 13 V.1. Lấy dữ liệu vào từ bàn phím Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 14 V.1. Lấy dữ liệu vào từ bàn phím String st = JOptionPane.showInputDialog( null, “Prompt Message”, “Dialog Title”, JOptionPane.QUESTION_MESSAGE); Để chuyển xâu ký tự biểu diễn số thành giá trị số nguyên ta dùng phương thức parseInt của lớp Integer. int intV = Integer.parseInt(intString); Để chuyển xâu ký tự biểu diễn số thành giá trị số thực ta dùng phương thức parseDouble của lớp Double. double doubleV = Double.parseDouble(doubleString); Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 15 Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 16 V.2. Đưa dữ liệu ra màn hình V.2. Đưa dữ liệu ra màn hình Để đưa dữ liệu ra màn hình ta dùng phương thức showMessageDialog() của lớp JOptionPane, phương thức này cho phép ta đưa dữ liệu qua hộp thoại. Khi đưa dữ liệu ra hội thoại ta có thể dùng phép + hoặc += để nối xâu ký tự các các giá trị kiểu dữ liệu cơ bản. Các dùng: Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng JOptionPane.showMessageDialog(null, "Welcome to Java!", "Example 1.2 Output", JOptionPane.INFORMATION_MESSAGE); 17 Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng V.2. Đưa dữ liệu ra màn hình 18 V.2. Đưa dữ liệu ra màn hình Để định dạng dữ liệu đưa ra màn hình ta dùng phương thức format() của lớp String, phương thức này định dạng các dữ liệu thành xâu ký tự và trả về xâu ký tự đã định dạng đó. %b logic false %c Ký tự ‘a’ String st = String.format ( Hằng xâu chứa các tác tử định dạng, Các dữ liệu ); %d Số nguyên 200 %f Số thực 2.45 %e Số thực dạng mũ 2.450E+2 %s Xâu ký tự “Ha Noi” Tác tử định dạng Các tác tử định dạng bắt đầu bằng dấu % theo sau là các chữ cái biểu thị loại dữ liệu sẽ định dạng. Ví dụ: %b định dạng giá trị logic thành false hoặc true, %d định dạng các số nguyên,… Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 19 Loại dữ liệu định dạng Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng Ví dụ 20 V.2. Đưa dữ liệu ra màn hình V.2. Đưa dữ liệu ra màn hình Có thể xác định độ rộng và độ chính xác ngay sau dấu %, giữa độ rộng và độ chính xác có một dấu chấm. Độ rộng là số khoảng trống dành cho dữ liệu, mỗi khoảng trống chứa được một ký tự. Độ chính xác là số chữ số sau dấu chấm thập phân. Ví dụ: Các dữ liệu cần định dạng phải phù hợp với các tác tử định dạng. Mặc định dữ liệu được căn phải trong độ rộng của nó, để căn trái ta thêm dấu trừ ngay sau dấu %. Ví dụ %-10d => Số nguyên có độ rộng 10, được căn trái. %8.2f định dạng cho số thực có độ rộng 8, số chữ số sau dấu chấm thập phân 2. %10d định dạng cho số nguyên, có độ rộng 10. Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 21 V.3. Ví dụ Viết chương trình tính diện tích và chu vi hình chữ nhật biết hai cạnh a, b. Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 23 Bài giảng LT JAVA - Phần 1,Chương 2 GV. Ngô Công Thắng 22 Chương 3. Các lệnh điều khiển chương trình Chương 3. Các lệnh điều khiển chương trình I. Lệnh lựa chọn I.1. Lệnh if I.2. Lệnh switch II. Lệnh lặp II.1. Lệnh lặp với số lần lặp xác định for II.2. Lệnh với số lần lặp không xác định II.2.1. Lệnh lặp kiểm tra điều kiện trước while II.2.2. Lệnh lặp kiểm tra điều kiện sau do-while III. Lệnh break và continue Tất cả các lệnh điều khiển chương trình của Java đều giống C++. Lệnh break và continue cũng giống trong C++, tuy nhiên trong Java có mở rộng: Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng 1 Chương 3. Các lệnh điều khiển chương trình 2 Chương 3. Các lệnh điều khiển chương trình Ví dụ về lệnh break có nhãn Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng Sau break và continue có thể có nhãn lệnh Nhãn lệnh là một tên theo sau là dấu hai chấm. Nhãn lệnh được đặt trước câu lệnh. Người ta thường đánh nhãn cho các lệnh lặp. Ví dụ về lệnh continue có nhãn 3 Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng 4 Chương 3. Các lệnh điều khiển chương trình Chương 3. Các lệnh điều khiển chương trình Bài tập 1: Viết chương trình nhập vào 3 số, sắp xếp 3 số này theo chiều tăng dần. Bài tập 2: Viết chương trình nhập vào tháng và năm dương lịch. Cho biết tháng trong năm đó có bao nhiêu ngày. Bài tập 3: Viết chương trình tính gần đúng số π theo công thức: Bài tập 4: Viết chương trình tìm ước số chung lớn nhất của hai số nguyên dương a, b. Bài tập 5: Viết chương trình tìm số nguyên lớn nhất n sao cho n3 < 12000. π 1 1 1 1 = 1 − + − + L + (−1) n 2n + 1 3 5 7 4 Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng 5 Bài giảng LT JAVA - Phần 1,Chương 3 GV. Ngô Công Thắng 6 4.1. Giới thiệu về phương thức Chương 4. Phương thức (Method) Tất cả các chương trình con trong Java đều thuộc một lớp nào đó, chúng được gọi là các phương thức (hàm thành viên trong C++). Khác với C++, các phương thức trong Java phải định nghĩa ngay trong khai báo lớp. Cú pháp định nghĩa phương thức giống định nghĩa hàm thành viên trong C++. Cú pháp gọi phương thức giống cú pháp gọi hàm thành viên trong C++. 4.1. Giới thiệu về phương thức 4.2. Tạo phương thức 4.3. Sử dụng phương thức 4.4. Truyền đối số theo giá trị 4.5. Chồng phương thức 4.6. Biến cục bộ 4.7. Các phương thức của lớp Math 4.8. Đóng gói các lớp Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 1 4.2. Tạo phương thức 2 4.2. Tạo phương thức Cú pháp định nghĩa phương thức hơi khác so với C++ ở chỗ là có thể có thêm các từ khóa modifier trước kiểu trả về. Modifier KieuTraVe TenPThuc(DS cac tham so) { //Than phuong thuc } Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 3 Ví dụ: modifier DS cac tham so public static int max(int num1, int num2) { TenPThuc if (num1 > num2) KieuTraVe return num1; else return num2; } Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 4 4.3. Sử dụng phương thức 4.3. Sử dụng phương thức Sử dụng phương thức thông qua lời gọi phương thức. Các biến được khai báo trong phần tiêu đề của phương thức được gọi là các tham số hình thức hay gọi tắt là tham số. Khi gọi phương thức, các giá trị truyền cho các tham số được gọi tham số thực sự hay đối số. Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 5 4.4. Truyền đối số theo giá trị TenDoiTuong.TenPThuc(Cac doi so) Hoặc TenLop.TenPThuc(Cac doi so) //nếu PThuc là tĩnh Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 6 4.5. Chồng phương thức Trong Java, việc truyền đối số cho phương thức chỉ có một kiểu là truyền đối số theo giá trị. Các đối số có thể là hằng, biến, biểu thức. Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng Nếu phương thức được gọi ngay trong lớp chứa định nghĩa phương thức thì lời gọi phương thức chỉ có tên phương thức cùng các đối số đặt trong ngoặc tròn. Nếu phương thức được gọi từ lớp khác thì cú pháp gọi như sau: Chồng phương thức giống như chồng hàm trong C++: Các phương thức có tên giống nhau nhưng danh sách các tham số khác nhau. Khi gọi một phương thức được chồng, trình biên dịch dựa vào kiểu đối số để xác định hàm được gọi. 7 Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 8 4.7. Các phương thức của lớp Math 4.6. Biến cục bộ Biến cục bộ là các biến được khai báo bên trong phương thức (giống biến tự động trong C++). Phạm vi sử dụng của biến cục bộ là từ vị trí khai báo đến hết khối lệnh chứa khai báo biến cục bộ. Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 9 4.7. Các phương thức của lớp Math 10 Các hàm mũ gồm có: exp(x) log(x) pow(y,x) sqrt(x) Cho sinx Cho cosx Cho tgx Cho arcsinx Cho arccosx Cho arctgx Đổi độ sang rad Đổi rad sang độ ex lnx yx Căn bậc 2 của x Các hàm làm tròn gồm có: ceil(x) floor(x) rint(x) Trong đó x có đơn vị là radian. Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 4.7. Các phương thức của lớp Math Các hàm lượng giác gồm có: sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) toRadians(degrees) toDegrees(radians) Các hàm số học chuẩn của Java là các phương thức của lớp Math. Các phương thức của lớp Math đều là các phương thức tĩnh (static) nên lời gọi phương thức phải gắn với tên lớp. Ví dụ: Math.pow(a,b) cho giá trị ab round(x) 11 Làm tròn x lên số nguyên gần nhất Làm tròn x xuống số nguyên gần nhất Làm tròn x tới số nguyên gần nhất, nếu x ở giữa hai số nguyên thì làm tròn thành số chẵn Làm tròn x Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 12 4.7. Các phương thức của lớp Math 4.8. Đóng gói các lớp Các hàm min, max và abs gồm có: max(a,b) min(a,b) abs(x) Các lớp có thể được nhóm lại với nhau thành các gói (package). Có bốn lý do cần đóng gói các lớp: Trả về giá trị lớn nhất Trả về giá trị nhỏ nhất Trả về |x| Dễ tìm các lớp: Các lớp có chức năng tương tự nhau được đặt trong cùng một gói để dễ tìm. Tránh sung đột tên Phân tán phần mềm thuận tiện Bảo vệ các thành viên của lớp Hàm ngẫu nhiên random() trả về một số ngẫu nhiên lớn hơn hoặc bằng 0 và nhỏ hơn 1. Để có số ngẫu nhiên nằm giữa a và a+b (trừ a + b) ta dùng công thức sau: a + Math.random() * b Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 13 4.8.1. Quy ước đặt tên gói 14 4.8.2. Thư mục chứa các gói Trong các gói có thể lại chứa các gói khác. Ví dụ: java.lang.Math cho biết lớp Math nằm trong gói lang, gói lang nằm trong gói java. Tổ chức các gói theo kiểu này sẽ đảm bảo các tên gói không bị trùng nhau. Nếu muốn đóng gói các lớp để đưa lên Internet cho mọi người sử dụng thì phải chọn một tên duy nhất, người ta thường lấy đảo ngược của tên miền Internet làm tiền tố của tên gói. Ví dụ: Tên miền của ĐHNN1 là hau1.edu.vn thì đặt tên gói là vn.edu.hau1.TenGoi Theo quy ước đặt tên gói dùng chữ thường. Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng Java yêu cầu cấu trúc thư mục chứa gói phải tương ứng với tên gói. Ví dụ: với tên gói là vn.edu.hau1.mypackage thì phải tạo cấu trúc thư mục là \vn\edu\hau1\mypackage Để Java tìm được nơi đặt cây thư mục gói thì biến môi trường classpath phải xác định thư mục chứa cậy thư mục gói. Ví dụ: nếu cây thư mục gói đặt trong thư mục c:\javapro thì classpath = . ;c:\javapro Dấu . xác định thư mục hiện tại luôn ở trong classpath. 15 Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 16 4.8.3. Đặt các lớp vào trong các gói Mỗi lớp Java đều thuộc một gói nào đó. Một lớp được đặt vào gói khi nó được biên dịch. Để đặt một lớp vào trong một gói thì cần đặt lệnh sau ở đầu file chứa lớp. package tengoi; Ví dụ: package vn.edu.hau1.mypackage; Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 4.8.3. Đặt các lớp vào trong các gói Lưu ý: Các lớp phải được khái báo là puplic để các chương trình khác có thể dùng được. Nếu muốn chứa nhiều lớp trong một gói thì phải để mỗi lớp trên một file riêng vì trên một file chỉ được phép có một lớp public. Các file class có thể nén thành một file, để sử dụng các lớp trong file nén này thì trong classpath phải chứa đường dẫn tới file nén. 17 Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng Bài tập chương 4 4.8.4. Sử dụng các lớp từ các gói Sử dụng trực tiếp tên lớp gắn với tên gói, ví dụ như javax.swing.JOptionPane Sử dụng lệnh import Bài tập 1: Viết chương trình tính trung bình và độ lệch chuẩn. n n import một lớp xác định, ví dụ: import javax.swing.JOptionPane import dựa vào khai báo, ví dụ: import javax.swing.* Dấu * xác định import dựa vào khai báo lớp. Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 18 ∑x mean = 19 n i 2 x ∑i− i =1 n (∑xi )2 deviation= Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng i=1 i=1 n n −1 20 Bài tập chương 4 Bài tập 2: Viết chương trình tính tổng các chữ số trong một số nguyên. Ví dụ: số nguyên 234 có tổng các chữ số bằng 2 + 3 + 4 = 9. Bài giảng LT JAVA - Phần 1,Chương 4 GV. Ngô Công Thắng 21 5.1. Khai báo và định nghĩa biến mảng Chương 5. Mảng 5.1. Khai báo và định nghĩa biến mảng 5.2. Copy mảng 5.3. Truyền mảng cho phương thức 5.4. Trả về mảng từ phương thức 5.5. Mảng nhiều chiều Bài tập chương 5 Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 5.1.1. Khai báo biến mảng 5.1.2. Tạo mảng (định nghĩa mảng) 5.1.3. Kích thước và giá trị mặc định của mảng 5.1.4. Truy nhập phần tử mảng 1 5.1.1. Khai báo biến mảng 2 5.1.2. Tạo mảng (định nghĩa mảng) Cú pháp khai báo biến mảng: KieuDuLieu[ ] TenBienMang; Khác với C++, việc khai báo biến mảng trong Java không tạo ra mảng, tức là không cấp phát vùng nhớ cho mảng, nó chỉ tạo ra một biến mà sau này có thể dùng để tham chiếu tới mảng. Biến mảng thực chất là biến tham chiếu. Về bản chất biến tham chiếu giống như con trỏ. Ví dụ: double[ ] a; Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng Sau khi khai báo biến mảng ta dùng toán tử new để tạo ra mảng (giống cấp phát mảng động trong C++) theo cú pháp sau: TenBienMang = new KieuDuLieu[KichThuoc]; Ví dụ: a = new double[10]; Lệnh này tạo ra một mảng có KichThuoc phần tử và gán tham chiếu tới TenBienMang. 3 Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 4 5.1.2. Tạo mảng (định nghĩa mảng) Giống như C++, toán tử new dùng để cấp phát bộ nhớ động => Mảng trong Java luôn là mảng động. Trong Java không có toán tử delete, việc giải phóng các vùng nhớ không còn được tham chiếu được thực hiện tự động bởi JVM. Người lập trình không phải lo việc giải phóng các vùng nhớ được cấp phát động bởi toán tử new. Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 5.1.2. Tạo mảng (định nghĩa mảng) Ta có thể gộp việc khai báo biến mảng, tạo mảng và gán tham chiếu tới biến mảng trong một lệnh: KieuDuLieu[ ] TenBienMang = new KieuDuLieu[KichThuoc]; Ví dụ: double[ ] myList = new double[10]; 5 5.1.2. Tạo mảng (định nghĩa mảng) Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 5.1.2. Tạo mảng (định nghĩa mảng) Khác C++, biến mảng không chứa mảng mà chỉ chứa tham chiếu tới mảng. Một mảng cũng có thể được tạo bằng các giá trị khởi tạo mà không cần đến toán tử new. 6 double[] myList = new double[5]; reference myList KieuDL[ ] TenBienMang = {Hằng 1, Hằng 2,…, Hằng k}; Ví dụ: double[ ] myList = {12,20,100,89}; => Tạo ra một mảng có 4 phần tử với giá trị ban đầu là 12, 20, 100 và 89. Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 7 Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 8 5.1.3. Kích thước và giá trị mặc định của mảng 5.1.4. Truy nhập phần tử mảng Vì mảng trong Java là mảng động nên nó có một biến cho biết kích thước của mảng: TenBienMang.length Ví dụ: myList.length cho biết kích thước của mảng myList là 5 Khi mảng được tạo, nó được gán giá trị ban đầu bằng 0 đối với mảng số, bằng ‘\u0000’ đối mảng char và bằng false đối với mảng boolean. Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 9 5.2. Copy mảng Sau khi tạo mảng và gán tham chiếu cho biến mảng ta có thể truy nhập trực tiếp các phần tử của mảng thông qua tên biến mảng và chỉ số truy nhập đặt trong ngoặc vuông (giống như C++). Chỉ số của phần tử mảng có giá trị từ 0 đến KichThuoc - 1 Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 10 5.2. Copy mảng Ta có thể gán hai biến mảng cùng kiểu cho nhau, tuy nhiên khi gán hai biến mảng chỉ có giá trị tham chiếu được gán còn nội dung mảng không được gán. Do đó, sau lệnh gán, cả hai biến mảng cùng tham chiếu tới một mảng. Để copy mảng có 2 cách sau: Cách dùng phương thức arraycopy: System.arraycopy(sourceArray,src_pos,targetArray,tar_pos,length); Trong đó, src_pos và tar_pos là vị trí bắt đầu copy trong mảng nguồn và đích, length là số phần tử cần copy. Sử dụng lệnh lặp copy từng phần tử Sử dụng phương thức arraycopy của lớp System Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 11 Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 12 5.3. Truyền mảng cho phương thức 5.3. Truyền mảng cho phương thức Giống truyền mảng cho hàm trong C++. Định nghĩa phương thức để truyền đối số là mảng: Truyền mảng cho phương thức: TenPThuc(TenBienMang); Để truyền mảng cho phương thức ta chỉ dùng tên biến mảng. Ví dụ: Average(a); Truyền mảng cho phương thức thực chất là truyền tham chiếu cho phương thức => Phương thức có thể thay đổi được mảng. KieuTraVe TenPThuc(KieuDL[ ] TenThamSo) { //Than phuong thuc } Ví dụ: float Average(int[] m) { } Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 13 Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 5.4. Trả về mảng từ phương thức 5.5. Mảng nhiều chiều Phương thức trả về mảng thực chất là trả về tham chiếu tới mảng. Muốn phương thức trả về mảng ta định nghĩa phương thức như sau: Khai báo biến mảng nhiều chiều: Kieu[ ][ ] TenBienMang; Trong đó mỗi cặp ngoặc vuông xác định một chiều, số cặp [ ] chính là số chiều. Ví dụ: Khai báo biến mảng hai chiều a có kiểu int như sau: int[ ][ ] a; KieuTraVe[ ] TenPThuc(DS Cac tham so) { } Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 15 Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 14 16 5.5. Mảng nhiều chiều 5.5. Mảng nhiều chiều Tạo mảng nhiều chiều TenBienMang = new Kieu[KT1][KT2]… Trong đó KT1, KT2 là kích thước chiều 1, chiều 2,… Ví dụ: a = new int[3][4]; //Tạo ra mảng hai chiều có 3 hàng 4 cột Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng Truy nhập phần tử mảng nhiều chiều: TenBienMang[cs1][cs2]… Trong đó cs1, cs2,… là chỉ số chiều 1, chiều 2,… Ví dụ: a[2][3] => truy nhập phần tử hàng 2, cột 3 của mảng hai chiều a. 17 Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 18 5.5. Mảng nhiều chiều Bài tập chương 5 Mảng nhiều chiều là mảng của các mảng Kích thước mảng nhiều chiều: Bài tập 1: Viết chương trình nhập vào một dãy có n số. Tính trung bình của dãy số, đưa trung bình và các số lớn hơn trung bình ra màn hình. Bài tập 2: Viết chương trình tạo ra 100 số nguyên ngẫu nhiên nằm giữa 0 và 9. Đếm số lần xuất hiện của từng số. Kích thước mảng nhiều chiều x được xác định thông qua x.length Mỗi phần tử của mảng x lại là một mảng nên có thể xác định kích thước thông qua x[0].length, x[1].length,… Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 19 Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 20 Bài tập chương 5 Bài tập 3: Viết chương trình nhập vào một dãy gồm n số nguyên, lưu dãy số này trong một mảng, truyền mảng cho một phương thức, phương thức trả về một mảng chứa các số theo thứ tự ngược với dãy số ban đầu. Bài tập 4: Viết phương thức tính tổng các số của một ma trận. Bài tập 5: Viết phương thức cộng hai ma trận. Phương thức trả về ma trận tổng. Bài giảng LT JAVA - Phần 1,Chương 5 GV. Ngô Công Thắng 21 [...]... cả các lệnh điều khiển chương trình của Java đều giống C++ Lệnh break và continue cũng giống trong C++, tuy nhiên trong Java có mở rộng: Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô Công Thắng 1 Chương 3 Các lệnh điều khiển chương trình 2 Chương 3 Các lệnh điều khiển chương trình Ví dụ về lệnh break có nhãn Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô... lệnh lặp Ví dụ về lệnh continue có nhãn 3 Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô Công Thắng 4 Chương 3 Các lệnh điều khiển chương trình Chương 3 Các lệnh điều khiển chương trình Bài tập 1: Viết chương trình nhập vào 3 số, sắp xếp 3 số này theo chiều tăng dần Bài tập 2: Viết chương trình nhập vào tháng và năm dương lịch Cho biết tháng trong năm đó có bao nhiêu ngày Bài tập 3: Viết chương trình tính... chương trình tìm ước số chung lớn nhất của hai số nguyên dương a, b Bài tập 5: Viết chương trình tìm số nguyên lớn nhất n sao cho n3 < 12000 π 1 1 1 1 = 1 − + − + L + (−1) n 2n + 1 3 5 7 4 Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô Công Thắng 5 Bài giảng LT JAVA - Phần 1,Chương 3 GV Ngô Công Thắng 6 4.1 Giới thiệu về phương thức Chương 4 Phương thức (Method) Tất cả các chương trình con trong Java đều... cho số nguyên, có độ rộng 10 Bài giảng LT JAVA - Phần 1,Chương 2 GV Ngô Công Thắng 21 V.3 Ví dụ Viết chương trình tính diện tích và chu vi hình chữ nhật biết hai cạnh a, b Bài giảng LT JAVA - Phần 1,Chương 2 GV Ngô Công Thắng 23 Bài giảng LT JAVA - Phần 1,Chương 2 GV Ngô Công Thắng 22 Chương 3 Các lệnh điều khiển chương trình Chương 3 Các lệnh điều khiển chương trình I Lệnh lựa chọn I.1 Lệnh if I.2 Lệnh... LT JAVA - Phần 1,Chương 5 GV Ngô Công Thắng 4 5.1.2 Tạo mảng (định nghĩa mảng) Giống như C++, toán tử new dùng để cấp phát bộ nhớ động => Mảng trong Java luôn là mảng động Trong Java không có toán tử delete, việc giải phóng các vùng nhớ không còn được tham chiếu được thực hiện tự động bởi JVM Người lập trình không phải lo việc giải phóng các vùng nhớ được cấp phát động bởi toán tử new Bài giảng LT JAVA. .. ] TenThamSo) { //Than phuong thuc } Ví dụ: float Average(int[] m) { } Bài giảng LT JAVA - Phần 1,Chương 5 GV Ngô Công Thắng 13 Bài giảng LT JAVA - Phần 1,Chương 5 GV Ngô Công Thắng 5.4 Trả về mảng từ phương thức 5.5 Mảng nhiều chiều Phương thức trả về mảng thực chất là trả về tham chiếu tới mảng Muốn phương thức trả về mảng ta định nghĩa phương thức như sau: Khai báo biến mảng nhiều chiều: Kieu[ ][... file nén 17 Bài giảng LT JAVA - Phần 1,Chương 4 GV Ngô Công Thắng Bài tập chương 4 4.8.4 Sử dụng các lớp từ các gói Sử dụng trực tiếp tên lớp gắn với tên gói, ví dụ như javax.swing.JOptionPane Sử dụng lệnh import Bài tập 1: Viết chương trình tính trung bình và độ lệch chuẩn n n import một lớp xác định, ví dụ: import javax.swing.JOptionPane import dựa vào khai báo, ví dụ: import javax.swing.* Dấu * xác... TenBienMang; Khác với C++, việc khai báo biến mảng trong Java không tạo ra mảng, tức là không cấp phát vùng nhớ cho mảng, nó chỉ tạo ra một biến mà sau này có thể dùng để tham chiếu tới mảng Biến mảng thực chất là biến tham chiếu Về bản chất biến tham chiếu giống như con trỏ Ví dụ: double[ ] a; Bài giảng LT JAVA - Phần 1,Chương 5 GV Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 5 GV Ngô Công Thắng Sau khi... vn.edu.hau1.TenGoi Theo quy ước đặt tên gói dùng chữ thường Bài giảng LT JAVA - Phần 1,Chương 4 GV Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương 4 GV Ngô Công Thắng Java yêu cầu cấu trúc thư mục chứa gói phải tương ứng với tên gói Ví dụ: với tên gói là vn.edu.hau1.mypackage thì phải tạo cấu trúc thư mục là \vn\edu\hau1\mypackage Để Java tìm được nơi đặt cây thư mục gói thì biến môi trường classpath phải... trường classpath phải xác định thư mục chứa cậy thư mục gói Ví dụ: nếu cây thư mục gói đặt trong thư mục c:\javapro thì classpath = ;c:\javapro Dấu xác định thư mục hiện tại luôn ở trong classpath 15 Bài giảng LT JAVA - Phần 1,Chương 4 GV Ngô Công Thắng 16 4.8.3 Đặt các lớp vào trong các gói Mỗi lớp Java đều thuộc một gói nào đó Một lớp được đặt vào gói khi nó được biên dịch Để đặt một lớp vào trong một

Ngày đăng: 18/10/2015, 10:01

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w