Giới thiệu ngôn ngữ lập trình Java

43 1.1K 5
Giới thiệu ngôn ngữ lập trình Java

Đ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

Giới thiệu ngôn ngữ lập trình Java

Chương Giới thiệu ngơn ngữ lập trình Java Giới thiệu công nghệ Java 1.1 Lịch sử phát triển Lịch sử phát triển Java bắt đầu năm 1991 SUN tiến hành dự án lập trình cho vi xử lý dùng thiết bị điện tử khác C++ không đáp ứng yêu cầu C++ cho đem mã nguồn từ máy sang máy khác sau biên dịch lại hoàn toàn phụ thuộc vào vi xử lý cụ thể Trong vi xử lý dùng thiết bị điện tử đa dạng có vòng đời ngắn ngủi Nếu ta thay đổi xử lý dẫn đến cần phải thay đổi trình biên dịch C++, điều gây lên tốn SUN thiết kế ngơn ngữ lập trình có tính khả chuyển cao Java Java tên địa phương nơi xuất xứ loại cà phê ngon tiếng Java thức cơng bố năm 1995 tạo lên trào lưu tồn giới từ đến tạo sức hút mạnh mẽ Bởi Java khơng đơn ngơn ngữ lập trình mà giải pháp cho nhiều vấn đề 1.2 Cấu trúc máy ảo Java (Java Virtual Machine) Chương trình ứng dụng hoạt động cách sử dụng đối tượng Java (Java Object) Máy ảo Java tạo thành cầu nối trình ứng dụng viết Java hệ điều hành Chương trình Java: tập hợp đối tượng Máy ảo Java Hệ điều hành Máy ảo Java bao gồm thành phần sau : • Trình nạp lớp (Class Loader): đọc bytecode từ đĩa từ kết nối mạng • Trình kiểm tra lớp (Class Verifier): Kiểm tra lớp không sinh lỗi ảnh hưởng tới hệ thống thực thi • Trình thực thi (Execution Unit): thực lệnh quy định bytecode Trong cơng cụ Java, tệp tin java.exe máy ảo Java 1.3 Các đặc trưng Java • Java môi trường độc lập (Independent Platform) Do cấu trúc Java nên ta soạn thảo chương trình hệ thống Sau biên dịch thành tệp tin lớp (*.class) ứng dụng thực thi hệ thống Đó đặc tính mà ngơn ngữ khác khơng có • Java ngơn ngữ lập trình hướng đối tượng túy (Pure Object Oriented Programming) Java ngơn ngữ lập trình hướng đối tượng túy, thứ Java đối tượng • Java ngơn ngữ có tính khả chuyển (Portibility) Java có tính khả chuyển mã nguồn thân mã biên dịch (bytecode) • Java môi trường xử lý phân tán (Distributed Enviroments) Bytecode không phụ thuộc vào hệ thống bytecode nằm phân tán mạng Việc liên kết với thư viện thực vào lúc chạy chương trình mã byte thường gọn nhẹ Chương trình Java nạp dần cách linh hoạt nên không gây q tải cho mạng Ngồi ra, Java cịn cho phép xử lý đa tuyến đoạn Cơ chế truyền thông điệp thuận tiện cho việc tổ chức mạng • Java mơi trường an tồn Khi phát triển ứng dụng phân tán nhừng vấn đề quan tâm hàng đầu an toàn hệ thống Java thiết kế để đảm bảo an toàn cho người dùng Java mạng Java có bốn tầng bảo an: Tầng 1: Mức ngơn ngữ trình biên dịch Java khơng có kiểu trỏ Trình biên dịch kiểm tra kiểu chặt chẽ Mọi chuyển đổi kiểu phải thực cách tường minh Trình biên dịch Java từ chối sinh mã byte mã nguồn không tuân thủ nghiêm ngặt quy tắc an toàn Tầng 2: Trình nạp lớp (Class Loader) Có khả phân biệt lớp đến từ mạng lớp nạp từ hệ thống Nhờ khả phân biệt lớp nạp qua mạng khống chế chặt chẽ, không phép thực thao tác mức thấp Tầng 3: Trình kiểm tra mã byte Trình kiểm tra mã byte vào lúc chạy chương trình bảo đảm chương trình Java biên dịch cách đắn Khi thực không gây lỗi ảnh hưởng tới hệ thống không đụng chạm tới liệu riêng tư máy khách Tầng 4: Trình bảo an Kiểm tra mã byte vào lúc chạy nhằm bảo đảm mã xét không vi phạm qui tắc an toàn thiết lập Các thao tác ứng dụng xem có khả gây nguy hiểm đọc, xóa tệp phải Trình bảo an cho phép • Java cung cấp cho người lập trình thư viện khủng lồ Java cung cấp cho người lập trình thư viện khổng lồ hàm chuẩn, gọi core API Các hàm chuẩn đặt gói • Java có chế quản lý nhớ tự động Quản lý nhớ vấn đề phức tạp C C++ Khi thực chương trình người lập trình chịu trách nhiệm khởi tạo vùng nhớ, sau dùng phải giải phóng vùng nhớ Chỉ cần lỗi nhỏ làm cạn kiệt tài nguyên dẫn đến treo hệ thống Java loại bỏ gánh nặng cho người lập trình Các vùng nhớ tự động giải phóng khơng tham chiếu đến đối tượng hoạt động • Chi phí phát triển ứng dụng Java thấp Khi phát triển ứng dụng dựa công nghệ Java có nhiều cơng cụ phát triển dịch vụ cung cấp miễn phí 1.4 Các ấn Java • J2SE ( Java Platform, Second Edition) Đây ấn chuẩn, bao gồm môi trường thời gian chạy tập hợp API để xây dựng loạt ứng dụng khác từ applet, ứng dụng độc lập chạy khác nhau, ứng dụng cho client cho ứng dụng doanh nghiệp khác • J2EE (Java Platform, Enterprise Edition (J2EE) J2EE tảng để xây dựng ứng dụng phía server • J2ME (Java Platform, Micro Edition ) Ấn cho phép xây dựng ứng dụng Java cho “vi thiết bị” (các thiết bị có hình hiển thị hỗ trợ nhớ tối thiểu, điện thoại di động thiết bị trợ giúp cá nhân) 1.5 Công cụ phát triển SUN cung cấp số tiện ích cho phép biên dịch bắt lỗi tạo tài liệu cho ứng dụng Java JDK bao gồm: • javac: Bộ biên dịch để chuyển mã nguồn thành bytecode • java: Bộ thông dịch để thực thi ứng dụng Java trực tiếp từ tập tin lớp • apppletviewer: Thực thi Java Applet từ tài liệu html 1.6 Các kiểu ứng dụng Java Có hai kiểu ứng dụng • Ứng dụng độc lập (Standalone Applicaiton) Cho phép lập trình ngơn ngữ lập trình khác Pascal, C • Ứng dụng ký sinh (Applet) Cho phép tạo chương trình liên kết với văn Web khởi động trình duyệt hỗ trợ Java Để thấy khác biệt hai kiểu ứng dụng nói xem khác biệt đặc trưng hai kiểu ứng dụng bảng đây: Ứng dụng độc lập Java Applet Khai báo Là lớp lớp Phải lớp Applet gói thư viện lớp Giao diện đồ họa Tùy chọn Do trình duyệt Web định Yêu cầu nhớ Bộ nhớ tối thiểu Bộ nhớ dành cho trình duyệt applet Cách nạp chương trình Nạp dịng lệnh Thông qua trang Web Dữ liệu vào Thông qua tham số dòng lệnh Các tham số đặt tệp HTML gồm địa chỉ, kích th- ớc trình duyệt Cách thức thực Mọi hoạt động bắt đầu Gọi hàm: init(), start(), kết thúc main() nh- C/C+ stop(), destroy(), paint() + Kiểu ứng dụng Ứng dụng máy chủ Server Công cụ phát triển phần mềm, - ứng dụng máy khách Bảng 2.1 Các ứng dụng Web 1.7 Cài đặt chương trình dịch Java cơng cụ Để cài đặt Java J2SDK ta cần tải J2SDK trang http://www.sun.com , trang cập nhật phiên Java Sau ta tải công cụ soạn thảo Edit Plus địa http://www.editplus.com Các bước cài đặt Java Bước 1: Cài đặt J2SDK Sau cài đặt xong, Java cài đặt thư mục: C:\Program Files\Java Trong thư mục có hai thư mục là: jdk1.5.0_01 jre1.5.0_01 • Công cụ phát triển nằm thư mục: • C:\Program Files\Java\jdk1.5.0_01\bin: Bao gồm công cụ cho phép ta phát triển, thực thi, gỡ rối soạn thảo chương trình viết ngơn ngữ lập trình Java • Môi trường thời gian chạy (Runtime Environment) • Nằm thư mục JRE Nó bao gồm máy ảo Java, thư viện lớp, tệp tin hỗ trợ việc xử lý chương trình viết ngơn ngữ lập trình Java • Các thư viện • Nằm thư mục lib Các thư viện lớp tệp tin bổ trợ cần cho cơng cụ phát triển • Các ứng dụng applet demo • Nằm thư mục demo Thư mục bao gồm ví dụ, mã nguồn lập trình cho Java/ Bước 2: Thiết lập biến môi trường Biến mơi trường path Trên desktop ta kích chuột phải vào biểu tượng My Computer, sau chọn thẻ Advanced, nháy chuột vào nút lệnh Enviroment Variable, xuất cửa sổ cho phép ta thiết lập biến môi trường sau: Hình 2.1 Nháy vào nút lệnh New để nhập vào thơng tin biến mơi trường Hình 2.2 Sau nháy chuột vào nút lệnh OK để hồn thành Thiết lập biến môi trường classpath tiến hành tương tự Hình 2.3 Bước 3: Cài đặt chương trình soạn thảo Edit Plus Bước 4: Tạo lập cơng cụ biên dịch thực thi chương trình Edit Plus Giao diện chương trình soạn thảo sau: 1.8 Một số ví dụ mở đầu Ví dụ 1: Tạo chương trình Java cho phép nhập dịng ký tự từ đối dòng lệnh hiển thị xâu ký tự lên hình: class ViDu1 { public static void main(String[] args) { System.out.println(args[0]); } } Biên dịch chương trình C:\>javac ViDu1.java Thực chương trình C:\>java ViDu1 "Lam quen voi ngon ngu lap trinh Java" Kết in là: Lam quen voi ngon ngu lap trinh Java Chương trình ta nhận thấy chương trình ứng dụng độc lập đơn giản Chương trình thực tác vụ đơn giản nhận xâu ký tự truyền vào từ đối dịng lệnh sau in xâu ký tự lên hình Đối dịng lệnh mảng xâu ký tự String[] args Khi ta thực thi chương trình trên, args[0] gán xâu ký tự "Lam quen voi ngon ngu lap trinh Java" Ví dụ 2: Tạo applet hiển thị xâu ký tự lên hình import java.applet.*; import java.awt.*; public class ViDu2 extends Applet { public void paint(Graphics g) { g.drawString("Chuc mung cac ban da cong voi vi du thu 2",30,30); } } Biên dịch applet C:\>javac ViDu2.java Tạo trang html để nhúng applet New Document Trong tài liệu ta để ý thấy dòng cho phép ta nhúng applet văn web Để thực thi applet ta cần hiển thị trang ViDu2.html trình duyệt Kết thể hình đây: Hình 2.4 Ngơn ngữ lập trình Java 2.1 Cấu trúc tệp chương trình Java Một tệp tin chương trình Java có phần đặc tả sau: Định nghĩa gói tùy chọn thơng qua định danh gói (package) Một số lệnh nhập import (0 nhiều) Một số định nghĩa lớp interface định nghĩa theo thứ tự Ví dụ giả sử có tệp nguồn Java sau: // Phần 1: Tùy chọn // Định nghĩa gói package GoiNhaTruong; // Phần 2: (0 nhiều hơn) // gói cần sử dụng import java.io.*; // Phần 3: (0 nhiều hơn) // Định nghĩa lớp interface public class NewApp{ } class C1{ } interface I1{ } // class Cn { } interface Im{ } Hình 2.5 Lưu ý: • • • • Tệp chương trình Java ln có tên trùng với tên lớp cơng khai (lớp chứa hàm main() ứng dụng độc lập) có phần mở rộng java Tệp NewApp.java chương trình ứng dụng độc lập phải có lớp có tên NewApp lớp phải có phương thức main() Phương thức ln có dạng: public static void main(String args[]){ // Nội dung cần thực chương trình ứng dụng } Khi dịch (javac) lớp tệp chương trình dịch thành byte code ghi thành tệp riêng có tên trùng với tên lớp có class Những lớp nạp vào chương trình lúc thông dịch thực theo yêu cầu Trong chương trình Java khơng có khai báo biến, hàm tách biệt khỏi lớp có khai báo định nghĩa lớp, interface Như chương trình Java xem tập lớp, interface đối tượng chúng trao đổi thông điệp với (bằng lời gọi hàm) để thực nhiệm vụ ứng dụng 2.2 Định danh, kiểu liệu khai báo biến Định danh (Identifier) Tên gọi thành phần chương trình gọi định danh Định danh thường sử dụng để xác định biến, kiểu, phương thức, lớp Qui tắc cho định danh: • Định danh dãy ký tự gồm chữ cái, chữ số ký tự khác: ‘_’, $, • Định danh khơng bắt đầu chữ số • Độ dài định danh khơng giới hạn • Java phân biệt chữ hoa chữ thường Qui ước đặt tên • Định danh cho lớp: chữ đầu từ định danh viết hoa • Ví dụ: MyClass, HocSinh, SocketServer, URLConnection, • Định danh cho biến, phương thức, đối tượng: chữ đầu từ định danh viết hoa trừ từ Ví dụ: hoTen (họ tên), namSinh (năm sinh), tinhTong (tính tổng) Chú thích Chú thích chương trình để giải thích cơng việc cách thực để người đọc dễ hiểu tiện theo dõi • Chú thích dịng //Đây thích dịng • Chú thích nhiều dịng /* Đây thích khối nhiều dịng */ 2.3 Các kiểu liệu nguyên thủy (primitive datatype) Kiểu liệu định nghĩa sẵn gọi kiểu nguyên thủy Kiểu nguyên thủy bao gồm kiểu: • Hình 2.6 Kiểu ngun: char (ký tự), byte, short, int, long • Kiểu số thực: float, double • Kiểu logic: boolean Kiểu liệu char byte short int long float doube Độ rộng 16 16 32 64 32 64 Bảng 2.2 Chú ý: • Các giá trị kiểu ngun thủy khơng phải đối tượng • Mỗi kiểu liệu có miền xác định phép tốn xác định • Mỗi kiểu liệu nguyên thủy có lớp gói (wrapper class) để sử dụng kiểu nguyên thủy đối tượng 10 Vì khối static ln xử lý trước nên kết in chương trình là: Khoi static Hello World! Khoi static 2.4.6 Các thành phần final • Biến final Một biến khai báo final Làm ngăn ngừa nội dung biến bị sửa đổi Điều nghĩa ta phải khai báo biến final khai báo Ví dụ • final double pi=3.1416; Sử dụng final với thừa kế Mặc dù nạp chồng phương thức đặc trưng mạnh Java, có lúc ta cần ngăn ngừa điều xảy Để không cho phép phương thức nạp chồng, xác định từ khóa final bổ từ đầu khai báo Các phương thức khai báo final nạp chồng Ví dụ class A { final void method(){ } } class B extends A{ final void method(){ } } Khai báo lớp B có lỗi, lớp A, phương thức method khai báo với từ khóa final nên khơng thể nạp chồng lớp B Sử dụng từ khóa final để cấm thừa kế Đơi ta cần cấm số lớp khơng có lớp Ta thực điều cách khai báo lớp với từ khóa final Ví dụ final class A { } Lúc này, lớp khác thừa kế từ lớp A 2.5 Các lớp trừu tượng 29 Trong lập trình Java, có lúc ta cần định nghĩa lớp cha khai báo cấu trúc cách khái quát mà không cài đặt cụ thể cho phương thức Các lớp cha định nghĩa dạng tổng quát hóa dùng chung lớp nó, việc cài đặt chi tiết phương thức thực lớp cụ thể Ví dụ: abstract class Hinh2D { double a,b,r; public abstract double dientich(); public abstract double chuvi(); } class HinhTron extends Hinh2D { public HinhTron(double r) { this.r=r; } public double dientich() { return Math.PI*r*r; } public double chuvi() { return Math.PI*2*r; } } class HinhChuNhat extends Hinh2D { public HinhChuNhat(double a,double b) { this.a=a; this.b=b; } public double dientich() { return a*b; 30 } public double chuvi() { return (a+b)*2; } } class AbstractDemo { public static void main(String args[]) { Hinh2D ht=new HinhTron(1); System.out.println("Dien tich hinh tron ban kinh 1.0 la:"+ht.dientich()); System.out.println("Chu vi hinh tron ban kinh 1.0 la:"+ht.chuvi()); Hinh2D hcn=new HinhChuNhat(3,4); System.out.println("Dien tich hinh chu nhat la:"+hcn.dientich()); System.out.println("Chu vi hinh chu nhat la "+hcn.chuvi()); } }; Kết thực chương trình C:\MyJava>java AbstractDemo Dien tich hinh tron ban kinh 1.0 la:3.141592653589793 Chu vi hinh tron ban kinh 1.0 la:6.283185307179586 Dien tich hinh chu nhat la:12.0 Chu vi hinh chu nhat la 14.0 Trong chương trình ta khai báo lớp trừu tượng Hinh2D, lớp có phương thức trừu tượng dientich() để tính diện tích hình lớp chuvi() để tính chu vi Các lớp trừu tượng khơng cài đặt mã lệnh Các lớp HinhTron HinhChuNhat lớp cụ thể lớp trừu tượng Hinh2D Các lớp cài đặt phương thức tính diện tích chu vi cụ thể 2.6 Giao tiếp (Interface) Thừa kế đóng vai trị quan trọng việc tiết kiệm thời gian công sức người lập trình Hầu hết chương trình thực tế sử dụng đa thừa kế Trong đa thừa kế, thừa kế phương thức thuộc tính từ số lớp khác Java khơng hỗ trợ đa thừa kế Tuy nhiên, nhận thấy tầm quan trọng đa thừa kế Java, Java đưa khái niệm interface Với giao tiếp ta xác định lớp phải làm khơng xác định cách làm 31 • Định nghĩa Một giao tiếp tập hợp định nghĩa phương thức (khơng có cài đặt) Một giao tiếp định nghĩa Ta đặt câu hỏi giao tiếp khác so với lớp trừu tượng? Dưới khác biệt giao tiếp lớp trừu tượng: Một giao tiếp thực thi phương thức nào, ngược lại lớp trừu tượng thực thi số phương thức o Một lớp thực thi nhiều giao tiếp lớp có lớp cha o Một giao tiếp khơng phải phận sơ đồ phân cấp lớp, lớp thực thi giao tiếp Khai báo giao tiếp o • Cú pháp chung khai báo giao tiếp public interface InterfaceName extends SuperInterfaces { //Thân giao tiếp } Hai thành phần bắt buộc khai báo giao tiếp là-từ khóa interface tên giao tiếp Từ khóa bổ trợ truy xuất public giao tiếp sử dụng lớp gói Nếu khơng xác định giao tiếp public giao tiếp truy xuất lớp định nghĩa gói với giao tiếp Một khai báo giao tiếp có thành phần khác: danh sách giao tiếp cha Một giao tiếp thừa kế giao tiếp khác, giống lớp thừa kế lớp lớp khác Danh sách giao tiếp cha phân cách dấu phẩy Thân giao tiếp Thân giao tiếp chứa khai báo phương thức cho tất phương thức có giao tiếp Một khai báo phương thức giao tiếp kết thúc dấu chấm phẩy (;) giao tiếp khơng cung cấp cách cài đặt cho phương thức khai báo Một giao tiếp chứa khai báo khai báo phương thức Các khai báo thành phần giao tiếp không phép sử dụng số từ khóa bổ trợ private, protected transient, volatile, synchronized khai báo thành phần giao tiếp Trong ví dụ sau ta tìm hiểu cách định nghĩa giao tiếp cách thực thi giao tiếp public interface CalculatorInterface { public double add(double x, double y); public double sub(double x, double y); public double mul(double x, double y); public double div(double x, double y); 32 } • Thực thi giao tiếp Một giao tiếp định nghĩa tập hợp hợp quy ước hành vi Một lớp thực thi giao tiếp tuân theo quy ước khai báo giao tiếp Để khai báo lớp thực thi giao tiếp, ta đưa vào mệnh đề implements khai báo lớp Một lớp thực thi nhiều giao tiếp (Java hỗ trợ đa thừa kế giao tiếp), sau từ khóa implements danh sách giao tiếp thực thi lớp Chú ý: Mệnh đề implements đứng sau mệnh đề extends tồn mệnh đề extends class CalculatorTest implements CalculatorInterface { public double add(double x, double y) { return x+y; } public double sub(double x, double y) { return x-y; } public double mul(double x, double y) { return x*y; } public double div(double x, double y) {return x/y; } public static void main(String[] args) throws Exception { CalculatorInterface cal=new CalculatorTest(); if(args.length!=2) { System.out.println("Cach chay chuong trinh: java CalculatorImpl so1 so2"); return; } 33 else { double x,y,z; x=Double.parseDouble(args[0]); y=Double.parseDouble(args[1]); System.out.println(x+"+"+y+"="+cal.add(x,y)); System.out.println(x+"-"+y+"="+cal.sub(x,y)); System.out.println(x+"*"+y+"="+cal.mul(x,y)); System.out.println(x+"/"+y+"="+cal.div(x,y)); } } } Kết thực chương trình C:\MyJava>java CalculatorTest 12 12.0+3.0=15.0 12.0-3.0=9.0 12.0*3.0=36.0 12.0/3.0=4.0 Sử dụng giao tiếp kiểu Khi ta định nghĩa giao tiếp mới, ta định nghĩa kiểu liệu tham chiếu Giao tiếp sử dụng khai báo biến tham chiếu Giả sử MyInterface giao tiếp ta khai báo sau: MyInterface mi; 2.7 Các gói sử dụng gói Java Các gói có thành phần lớp, interface, gói có liên quan với Việc tổ chức thành gói có số lợi ích sau đây: Các gói cho phép ta tổ chức lớp thành đơn vị nhỏ (như thư mục), giúp cho việc định vị sử dụng lớp tương ứng trở nên dễ dàng o Tránh vấn đề xung đột tên o o Cho phép ta bảo vệ lớp, liệu phương thức theo o • quy mơ lớn so với phạm vi lớp Các tên gói sử dụng để định danh lớp bạn Truy xuất tới thành phần gói Java Để truy xuất tới thành phần gói Java ta sử dụng cú pháp sau: 34 MyPackage.MyClass MyPackage tên gói, MyClass tên lớp nằm gói MyPackage • Khai báo gói chương trình Để sử dụng thành phần gói chương trình Java, ta cần phải khai báo gói cụ thể chứa lớp đó: import ten_goi.*;// ten_goi: tên gói Với khai báo trên, ta truy xuất tới tất lớp, interface nằm gói Để khai báo sử dụng lớp cụ thể chương trình ta khai báo dòng lệnh sau: import ten_goi.ten_lop; // ten_lop: tên lớp Giả sử ta có gói MyPackge, bên gói MyPackage lại có số gói SubPackage1, SubPackage2, ta khai báo sử dụng thành phần gói SubPackage1 sau: • import MyPackage.SubPackage1.*; Cách tạo gói Java Bước 1: Khai báo gói Java Giả sử ta khai báo gói có tên mypackage, bên gói có lớp Calculator package mypackage; public class Calculator { public double cong(double a,double b) { return a+b; } public double nhan(double a, double b) { return a*b; } public double tru(double a,double b) { return a-b; } public double chia(double a,double b) throws Exception { return a/b; } 35 } Bước 2: Biên dịch C:\>javac -d C:\MyJava Calculator.java Một vài điều cần lưu ý khai báo thành viên gói Thứ nhất, thành phần gói cần khai báo với thuộc tính public, cần truy xuất chúng từ bên 2.6 Quản lý ngoại lệ (Exception Handling) • Khái niệm Trong q trình xử lý, ứng dụng bất ngờ gặp lỗi với mức độ nghiêm trọng khác Khi phương thức tác động đối tượng, đối tượng phát vấn đề trạng thái bên (chẳng hạn giá trị không quán, lỗi chia 0), phát lỗi với đối tượng hay liệu mà thao tác (như file hay địa mạng) xác định vi phạm qui tắc (như đọc liệu từ luồng bị đóng), Rất nhiều người lập trình khơng thể kiểm tra tất trạng thái lỗi xảy Exception cung cấp cách để kiểm tra lỗi mà không chia cắt mã Exception đưa chế báo lỗi cách trực tiếp không sử dụng cờ hay hiệu ứng phụ • Các ngoại lệ Java Trong Java có lớp Exception, lớp ngoại lệ lớp lớp Lớp Exception lớp lớp Throwable Throwable Exception Hình 2.7 Lớp Throwable chứa xâu sử dụng để mô tả ngoại lệ Ngoại lệ phân thành hai loại: Ngoại lệ kiểm tra (checked exception) ngoại lệ không kiểm tra (unchecked exception) 36 Ngoại lệ kiểm tra ngoại lệ mà trình biên dịch kiểm tra phương thức người lập trình đưa ngoại lệ chúng thông báo để đưa Ngoại lệ không kiểm tra lớp lớp Error; RuntimeException Java cung cấp mơ hình quản lý ngoại lệ cho phép kiểm tra lỗi vị trí có liên quan • Khối try catch Cú pháp o Khối try Bao gồm tập hợp lệnh phát sinh ngoại lệ xử lý Một phương thức, đưa ngoại lệ đặt try Các khối try lồng try{ stmt1; stmt2; try{ stmt3; stmt4; } catch(Exception e) { } } catch(Exception e) { } Khi khối try lồng nhau, khối try bên xử lý trước ngoại lệ đưa khối đón bắt khối try catch Nếu khối catch bên không thỏa mãn khối try bên ngồi kiểm tra Nếu khối catch phù hợp tìm thấy, ngoại lệ quản lý khối ngược lại môi trường Java Runtime quản lý ngoại lệ try { doFileProcessing(); displayResults(); } catch(Exception e) 37 { System er.println(e.getMessage()); } Bất kỳ lỗi xảy trình xử lý doFileProcessing() hay displayResult() đựơc đón bắt khối catch xử lý Nếu có lỗi xảy trình xử lý doFileProcessing(), phương thức displayResult() không gọi, khối catch xử lý Một khối try có nhiều khối catch xử lý kiểu khác try { } catch(Exception e) { } catch(Exception e) { } finally { //Thực cơng việc thu dọn } Ví dụ: class TryCatch { public static void main(String[] args) {int x,y; try{ x=Integer.parseInt(args[0]); y=Integer.parseInt(args[1]); x=x/y; System.out.println("x="+x); } catch(ArithmeticException e) { System.out.println("Khong the chia cho 0"); 38 System.err.println(e); } } } Kết C:\MyJava\Baitap>java TryCatch 18 x=2 Kết C:\MyJava\Baitap>java TryCatch Khong the chia cho java.lang.ArithmeticException: / by zero • Khối finally Khối finally khối mà thấy lệnh trả tài nguyên cho hệ thống lệnh khác để in thông báo Các lệnh khối finanally là: o Đóng file o Đóng resultset (Lập trình sở liệu) o Ngắt liên kết thiết lập với sở liệu … Khối finally xử lý dù ngoại lệ có xảy hay khơng • Mệnh đề throw Các ngoại lệ đưa cách sử dụng lệnh throw, nhận đối tượng làm tham số, đối tượng thuộc lớp lớp lớp Throwable Ví dụ: class ArraySizeException extends NegativeArraySizeException { ArraySizeException() { super("Nhap kich thuoc mang khong hop le"); } } class ThrowDemo { 39 int size, a[]; ThrowDemo(int s) { size =s; try{ checkSize(); } catch(ArraySizeException e) { System.out.println(e); } } void checkSize() throws ArraySizeException { if(sizejava FinallyDemo 16 try catch finally demo Khong the chia 0! Xu ly khoi finally Kết C:\MyJava\Baitap>java FinallyDemo 16 try catch finally demo Ket qua Xu ly khoi finally • Một số ngoại lệ thường gặp o RuntimeException o ArithmeticException o IllegalArgumentException o ArrayIndexOutOfBoundsException o NullPointerException o SecurityException o NoSuchElementException o ClassNotFoundException o AWTException o DataFormatException o SQLException o IOException o UnknownHostException o SocketException o EOFException 42 o MalformedURLException o FileNotFoundException o IllegalAccessException o NoSuchMethodException 43 ...• Java ngơn ngữ lập trình hướng đối tượng túy (Pure Object Oriented Programming) Java ngơn ngữ lập trình hướng đối tượng túy, thứ Java đối tượng • Java ngơn ngữ có tính khả chuyển... chương trình C:\>javac ViDu1 .java Thực chương trình C:\ >java ViDu1 "Lam quen voi ngon ngu lap trinh Java" Kết in là: Lam quen voi ngon ngu lap trinh Java Chương trình ta nhận thấy chương trình. .. applet ta cần hiển thị trang ViDu2.html trình duyệt Kết thể hình đây: Hình 2.4 Ngơn ngữ lập trình Java 2.1 Cấu trúc tệp chương trình Java Một tệp tin chương trình Java có phần đặc tả sau: Định nghĩa

Ngày đăng: 05/09/2012, 15:51

Hình ảnh liên quan

Bảng 2.1 - Giới thiệu ngôn ngữ lập trình Java

Bảng 2.1.

Xem tại trang 4 của tài liệu.
Hình 2.3 - Giới thiệu ngôn ngữ lập trình Java

Hình 2.3.

Xem tại trang 6 của tài liệu.
Hình 2.4 - Giới thiệu ngôn ngữ lập trình Java

Hình 2.4.

Xem tại trang 8 của tài liệu.
Hình 2.6 • Kiểu nguyên: char (ký tự), byte, short, int, long. •Kiểu số thực: float, double. - Giới thiệu ngôn ngữ lập trình Java

Hình 2.6.

• Kiểu nguyên: char (ký tự), byte, short, int, long. •Kiểu số thực: float, double Xem tại trang 10 của tài liệu.
Bảng 2.2 - Giới thiệu ngôn ngữ lập trình Java

Bảng 2.2.

Xem tại trang 10 của tài liệu.
Bảng 2.3 - Giới thiệu ngôn ngữ lập trình Java

Bảng 2.3.

Xem tại trang 11 của tài liệu.
Bảng 2.4 Qui tắc chuyển đổi kiểu trong Java - Giới thiệu ngôn ngữ lập trình Java

Bảng 2.4.

Qui tắc chuyển đổi kiểu trong Java Xem tại trang 11 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan