Bài giảng Ngôn ngữ Java

1991:được Sun Microsystems phát triển nhằm mục đích viết phần mềm điều khiển (phần mềm nhúng) cho các sản phẩm gia dụng  lúc đầu được đặt tên là Oak  1995:được phổ cập với sự phát triển mạnh mẽ của Internet  thịtrường phần mềm nhúng không phát triển mạnh  WWW bùng nổ (1993~)  Hiện nay, được chấp nhận rộng rãi với tư cách là một ngôn ngữ (công nghệ) đa dụng  khả chuyển, an toàn  hướng đối tượng, hướng thành phần

pdf30 trang | Chia sẻ: haohao89 | Lượt xem: 2192 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Bài giảng Ngôn ngữ Java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1NGÔN NGỮ JAVA 2 Nội dung  Giới thiệu Java  Chương trình Java đầu tiên  Cơ bản về biến và đối tượng  Các cấu trúc điều khiển  Mảng  Một số lớp trong java 33 Giới thiệu Java  Lịch sử Java  Các dạng ứng dụng của Java  Quá trình dịch chương trình Java  Máy ảo Java – Java Virtual Machine (JVM)  Java Development Kit (JDK)  Một số môi trường phát triển tích hợp (IDE)- 4 Lịch sử Java  1991: được Sun Microsystems phát triển nhằm mục đích viết phần mềm điều khiển (phần mềm nhúng) cho các sản phẩm gia dụng  lúc đầu được đặt tên là Oak  1995: được phổ cập với sự phát triển mạnh mẽ của Internet  thị trường phần mềm nhúng không phát triển mạnh WWW bùng nổ (1993~)  Hiện nay, được chấp nhận rộng rãi với tư cách là một ngôn ngữ (công nghệ) đa dụng  khả chuyển, an toàn  hướng đối tượng, hướng thành phần 5 Java là gì?  Một ngôn ngữ lập trình hướng đối tượng.  Một ngôn ngữ lập trình vừa biên dịch vừa thông dịch.  Đầu tiên, mã nguồn (.java) được biên dịch để chuyển thành dạng bytecode (.class) nhờ trình biên dịch javac.  Sau đó được thực thi trên từng máy cụ thể nhờ trình thông dịch java.  Một ngôn ngữ độc lập nền (phần cứng và hệ điều hành)  Chương trình java nếu chạy đúng trên phần cứng của một họ máy nào đó thì nó cũng chạy đúng trên tất cả các họ máy khác.  Chương trình java có thể chạy trên tất cả các hệ điều hành, miễn là có cài máy ảo java (Java Virtual Machine). Write once, run anywhere 6 Các chương trình dịch truyền thống 7Chương trình dịch Java 88 Giới thiệu Java  Lịch sử Java  Các dạng ứng dụng của Java  Quá trình dịch chương trình Java  Máy ảo Java – Java Virtual Machine (JVM)  Java Development Kit (JDK)  Một số môi trường phát triển tích hợp (IDE) 9 Các dạng ứng dụng của Java  Applets  Chương trình chạy trên Internet 10 Các dạng ứng dụng của Java  Console applications  Chạy dạng dòng lệnh 11 Các dạng ứng dụng của Java  GUI Applications  Chương trình chạy độc lập với giao diện đồ họa 12 Các dạng ứng dụng của Java  Ứng dụng Web (JSP/Servlet) 1313 Giới thiệu Java  Lịch sử Java  Các dạng ứng dụng của Java  Quá trình dịch chương trình Java  Máy ảo Java – Java Virtual Machine (JVM)  Java Development Kit (JDK)  Một số môi trường phát triển tích hợp (IDE) 14 Dịch và thực thi chương trình Java  Viết mã nguồn: dùng một chương trình soạn thảo (NotePad,…) để viết mã nguồn và lưu lại với tên có đuôi “.java”.  Biên dịch ra mã máy ảo: dùng trình biên dịch javac để biên dịch mã nguồn “.java” thành mã của máy ảo (bytecode) có đuôi “.class” và lưu lên đĩa.  Thông dịch và thực thi: ứng dụng được load vào bộ nhớ, thông dịch và thực thi, dùng trình thông dịch java.  Đưa mã bytecode vào bộ nhớ: đây là bước “loading”. Chương trình phải được đặt vào trong bộ nhớ trước khi thực thi. “Loader” sẽ lấy các files chứa mã bytecode có đuôi “.class” và nạp chúng vào bộ nhớ.  Kiểm tra mã bytecode: trước khi trình thông dịch chuyển mã bytecode thành mã máy tương ứng để thực thi thì các mã bytecode phải được kiểm tra tính hợp lệ.  Thông dịch & thực thi: cuối cùng dưới sự điều khiển của CPU và trình thông dịch tại mỗi thời điểm sẽ có một mã bytecode được chuyển sang mã máy và thực thi. 15 Primary Memory . . . . . . Disk Disk Disk Editor Compiler Class Loader Program is created in an editor and stored on disk in a file ending with .java. Compiler creates bytecodes and stores them on disk in a file ending with .class. Class loader reads .class files containing bytecodes from disk and puts those bytecodes in memory. Phase 1 Phase 2 Phase 3 Primary Memory . . . . . . Bytecode Verifier Bytecode verifier confirms that all bytecodes are valid and do not violate Java’s security restrictions. Phase 4 Primary Memory . . . . . . Interpreter Interpreter reads bytecodes and translates them into a language that the computer can understand, possibly storing data values as the program executes. Phase 5 16 Lỗi Chương Trình errors errors Edit and save program Compile program Execute program and evaluate results 17 Lỗi Chương Trình  1 chương trình có 3 kiểu lỗi:  Lỗi biên dịch (compile-time errors): liên quan đến cú pháp.  Lỗi xuất hiện trong quá trình thực thi chương trình (run- time errors), chương trình kết thúc. Ví dụ: chia 1 số cho 0.  logical errors: Kết quả sai. 18 Giới thiệu Java  Lịch sử Java  Các dạng ứng dụng của Java  Quá trình dịch chương trình Java  Máy ảo Java – Java Virtual Machine (JVM)  Java Development Kit (JDK)  Một số môi trường phát triển tích hợp (IDE) 19 Java Virtual Machine - JVM  JVM (máy ảo Java) là một phần mềm mô phỏng một máy tính thật, được xem như một máy tính thu nhỏ.  Có tập các lệnh logic để xác định hoạt động của máy tính.  Nó thiết lập lớp trừu tượng cho:  Phần cứng bên dưới  Hệ điều hành  Mã đã biên dịch  JVM cung cấp môi trường bên trong để thực thi chương trình Java (dạng bytecode).  JVM thông thường được cung cấp dưới dạng phần mềm.  JRE - Java Runtime Environment 2020 Giới thiệu Java  Lịch sử Java  Các dạng ứng dụng của Java  Quá trình dịch chương trình Java  Máy ảo Java – Java Virtual Machine (JVM)  Java Development Kit (JDK)  Một số môi trường phát triển tích hợp (IDE) 21 Java Development Kit (JDK)  Môi trường phát triển và thực thi do Sun Microsystems cung cấp (  Bao gồm phần mềm và công cụ giúp compile, debug và execute ứng dụng.  JDK 1.0 - 1996  JDK 1.1 - 1997  JDK 1.2 (Java 2) - 1998  JDK 1.3 - 2000  Java 1.4 - 2002  Java 5 (1.5) – Tiger - 2004  Java 6 - 2006  Cài đặt… 22 Java Development Kit (JDK)  Compiler (trình biên dịch)  Syntax: javac [option] source  Source : files ends with an extension of .java  options :  -classpath….. 23 Java Development Kit (JDK)  Interpreter (trình thông dịch)  Syntax: java [option] classname [arguments]  classname : files ends with an extension of .class  options can include  -classpath …… 2424 Giới thiệu Java  Lịch sử Java  Các dạng ứng dụng của Java  Quá trình dịch chương trình Java  Máy ảo Java – Java Virtual Machine (JVM)  Java Development Kit (JDK)  Một số môi trường phát triển tích hợp (IDE) 25 Một số IDE (Integrated Development Environment )  Giúp phát triển ứng dụng một cách đơn giản, nhanh chóng và hiệu quả.  Java Studio của Sun  Borland JBuilder của Borland  Eclipse của IBM  JCreator của Xinor ….. 26 Nội dung  Giới thiệu Java  Chương trình Java đầu tiên  Cơ bản về biến và đối tượng  Các cấu trúc điều khiển  Mảng  Một số lớp trong java 27 Cấu trúc một chương trình Java  Trong ngôn ngữ lập trình Java:  Một chương trình được tạo bởi một hay nhiều lớp  Một lớp chứa một hay nhiều phương thức  Một phương thức chứa các câu lệnh chương trình  Một chương trình ứng dụng Java luôn luôn chứa một phương thức gọi là main. class header method body // Những ghi chú về lớp method header // Những ghi chú về lớp 28 /* * Created on Jul 14, 2005 * * First Java Program */ package com.jds.sample; import java.util.*; /** * @author JDS */ public class JavaMain { public static void main(String[] args) { // print a message System.out.println("Welcome to Java!"); } } class Extra { /* * class body */ } 1. Package declaration Used to organize a collection of related classes. 2. Import statement Used to reference classes. 3. Class declaration A Java source file can have several classes but only one public class is allowed. declaration order Cấu trúc một chương trình Java 29 1. Single Line Comment // insert comments here 2. Block Comment /* * insert comments here */ 3. Documentation Comment /** * insert documentation */ /* * Created on Jul 14, 2005 * * First Java Program */ package com.jds.sample; import java.util.*; /** * @author JDS */ public class JavaMain { public static void main(String[] args) { // print a message System.out.println("Welcome to Java!"); } } class Extra { /* * class body */ } Cấu trúc một chương trình Java Comments 30 Chú thích (Comments)  Comments trong một chương trình gọi là inline documentation  Chúng được sử dụng để giải thích mục đích của chương trình và miêu tả những bước xử lý trong chương trình.  Những comment không ảnh hưởng đến một chương trình làm việc như thế nào  Java có 3 dạng comment: // Chú thích một dòng /* Chú thích trên nhiều dòng: chú thích dòng 1 chú thích dòng 2 ... */ /** Chú thích dạng tài liệu */ 31 /* * Created on Jul 14, 2005 * * First Java Program */ package com.jds.sample; import java.util.*; /** * @author JDS */ public class JavaMain { public static void main(String[] args) { // print a message System.out.println("Welcome to Java!"); } } class Extra { /* * class body */ } •Every java program includes at least one class definition. The class is the fundamental component of all Java programs. •A class definition contains all the variables and methods that make the program work. This is contained in the class body indicated by the opening and closing braces. Cấu trúc một chương trình Java Class 32 /* * Created on Jul 14, 2005 * * First Java Program */ package com.jds.sample; import java.util.*; /** * @author JDS */ public class JavaMain { public static void main(String[] args) { // print a message System.out.println("Welcome to Java!"); } } class Extra { /* * class body */ } Cấu trúc một chương trình Java • Braces are used for grouping statements or block of codes. • The left brace ( { ) indicates the beginning of a class body, which contains any variables and methods the class needs. • The left brace also indicates the beginning of a method body. • For every left brace that opens a class or method you need a corresponding right brace ( } ) to close the class or method. • A right brace always closes its nearest left brace. Braces 33 /* * Created on Jul 14, 2005 * * First Java Program */ package com.jds.sample; import java.util.*; /** * @author JDS */ public class JavaMain { public static void main(String args[]) { // print a message System.out.println("Welcome to Java!"); } } class Extra { /* * class body */ } Cấu trúc một chương trình Java This line begins the main() method. This is the line at which the program will begin executing. main() method Declares a parameter named args, which is an array of String. It represents command-line arguments. String args[] 34 /* * Created on Jul 14, 2005 * * First Java Program */ package com.jds.sample; import java.util.*; /** * @author JDS */ public class JavaMain { public static void main(String[] args) { // print a message System.out.println("Welcome to Java!"); } } class Extra { /* * class body */ } Java Source File Structure • A complete unit of work in a Java program. • A statement is always terminated with a semicolon and may span multiple lines in your source code. Java statement This line outputs the string “Welcome to Java!” followed by a new line on the screen. System.out.println() 35 Chương trình java đầu tiên  Yêu cầu: Viết chương trình xuất chuỗi “Welcome to Java Programming!” ra màn hình.  Phân tích: - Cần tác vụ xuất Sử dụng gói của java import java….* - Cần tạo 1 lớp có chức năng xuất chuỗi này (lớp Welcome) . Vì chức năng của chương trình đơn giản -> lớp này chỉ có 1 hành vi main(…), nội dung hành vi là xuất chuỗi được yêu cầu.  Cách làm 1: Viết code bằng 1 editor, về dấu nhắc Command Prompt biên dịch, chạy chương trình.  Cách làm 2: Nhờ 1 IDE như Jcreator, JPadPro, Jbuilder, … cho phép vừa viết code vừa thực thi. 36 1 // Welcome1.java 2 // Text-printing program. 3 4 public class Welcome1 { 5 6 7 public static void main( String args[] ) 8 { 9 System.out.println("Welcome to Java Programming!"); 10 11 } 12 13 } Welcome to Java Programming! 37 Chương trình Java đầu tiên  javac Welcome1.java  Nếu không có lỗi sẽ tạo ra file Welcome1.class  java Welcome1 Output 38 Welcome to Java Programming! 1 // Fig. 2.3: Welcome2.java 2 // Printing a line of text with multiple statements. 3 4 public class Welcome2 { 5 6 7 public static void main( String args[] ) 8 { 9 System.out.print( "Welcome to " ); 10 System.out.println( "Java Programming!"); 11 12 } 13 14 } System.out.print keeps the cursor on the same line, so System.out.println continues on the same line. Bài tập  Viết chương trình in ra thông tin của bạn, thông tin bao gồm: MaSV, Họ tên, Ngày sinh, Lớp, Điểm trung bình… vd: MaSV: 12345 Họ tên: Nguyen Thanh Thuong Ngày sinh: 12-10-1989 Lớp: 08CTH123 Điểm TB: 7.9  Viết chương trình xuất ra các hình dưới đây: 39 40 Nội dung  Giới thiệu Java  Chương trình Java đầu tiên  Cơ bản về biến và đối tượng  Các cấu trúc điều khiển  Mảng  Một số lớp trong java 41 Định danh-Tên  Bắt đầu bằng ký tự, ký tự gạch dưới (underscore ‘_’ ) hay ký tự ‘$’  Sau đó là các ký tự ký số hay ‘_’, ‘$’ , không dùng các ký tự khác như: khoảng trống, ký hiệu phép toán  Java phân biệt chữ hoa, chữ thường - Total, total, và TOTAL là những định danh khác nhau  Theo qui ước, người lập trình sử dụng kiểu chữ khác nhau cho những kiểu định danh khác nhau, chẳng hạn như:  Kiểu chữ hoa đầu cho tên lớp- HelloWorld  Kiểu chữ hoa cho hằng – MAXIMUM  Những từ khóa không được sử dụng và một định danh có thể có độ dài bất kỳ. 42 Từ khóa  Những từ khóa trong Java: abstract assert boolean break byte case catch char class const continue default do double else enum extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while 43 Từ khóa  Từ khóa cho các kiểu dữ liệu cơ bản : byte, short, int, long, float, double, char, boolean  Từ khóa cho phát biểu lặp: do, while, for, break, continue  Từ khóa cho phát biểu rẽ nhánh: if, else, switch, case, default, break  Từ khóa đặc tả đặc tính một method: private, public, protected, final, static, abstract, synchronized, volatile, strictfp  Hằng (literal): true, false, null  Từ khóa liên quan đến method: return, void  Từ khoá liên quan đến package: package, import  Từ khóa cho việc quản lý lỗi: try, catch. finally, throw, throws  Từ khóa liên quan đến đối tượng: new, extends, implements, class, instanceof, this, super 44 Khoảng trắng  Khoảng trống, dòng trống, và tab được gọi là khoảng trắng  Khoảng trắng được sử dụng để tách rời những từ và ký hiệu trong một chương trình  Nhiều hơn một khoảng trắng sẽ được bỏ qua  Một chương trình java hợp lệ có thể được định dạng trong nhiều cách  Xem ví dụ: Lincoln2.java  Xem ví dụ Lincoln3.java 45 Lỗi  Một chương trình có thể có 3 kiểu lỗi  Compile-time errors: Trình biên dịch sẽ tìm thấy những lỗi cú pháp và những lỗi cơ bản khác khi biên dịch chương trình  Nếu compile-time errors tồn tại, một bản dịch có thể thực hiện được của chương trình không được tạo.  Run-time errors: một lỗi có thể xuất hiện trong suốt quá trình thực thi chương trình, chẳng hạn như chia 1 số cho 0, làm cho chương trình kết thúc bất thường.  Logical errors: Chương trình có thể chạy nhưng đưa ra những kết quả không đúng, có thể do việc sử dụng công thức. 46 Ví dụ về Compilation Errors public class ShowSyntaxErrors { public static void main(String[] args) { i = 30; System.out.println(i+4); } } 47 Ví dụ về Runtime Errors public class ShowRuntimeErrors { public static void main(String[] args) { int i = 1 / 0; } } 48 Ví dụ về Logic Errors public class ShowLogicErrors { public static void main(String[] args) { // Cong so1 voi so2 int so1 = 3; int so2 = 5; so2 += so1 + so2; System.out.println("so2 bang " + so2); } } 49 Phương thức println  Trong chương trình welcome2, chúng ta đã gọi phương thức println để xuất ra một chuỗi ký tự.  Đối tượng System.out tương ứng với một thiết bị cuối (màn hình) để nhận kết quả được đưa ra. System.out.println ("Whatever you are, be a good one."); object method name information provided to the method(parameters) 50 Phương thức print  Phương thức print tương tự như phương thức println, ngoại trừ nó không di chuyển đến dòng kế tiếp.  Do đó, bất kỳ cái gì được xuất ra sau khi câu lệnh print thực thi sẽ xuất hiện trên cùng một dòng  Xem ví dụ: Countdown.java 51 Toán tử Nối chuỗi  Toán tử nối chuỗi (+): được sử dụng để nối một chuỗi vào cuối một chuỗi khác “Hello " + “You"  Nó cũng có thể được sử dụng để nối một số vào một chuỗi  Một hằng chuỗi không thể được ngắt thành 2 dòng trong chương trình.  Xem ví dụ: Facts.java 52 Toán tử Nối chuỗi  Toán tử (+) cũng được sử dụng cho phép tính cộng  Chức năng của toán tử + phụ thuộc vào kiểu thông tin nó thực hiện  Nếu 2 toán hạng là chuỗi hoặc nếu một là chuỗi và một là số, thì chức năng của toán tử + là nối chuỗi.  Nếu 2 toán hạng là số, nó thực hiện chức năng cộng 2 số.  Xem Addition.java 53 Ví dụ nối chuỗi  String message = "Welcome " + "to " + "Java"; // ⇒ message = "Welcome to Java"  String s = "Chuong" + 2; // ⇒ s trở thành Chuong2  String s1 = "Hello" + 'B'; // s1 trở thành HelloB 54 Chuỗi thoát (Escape Sequence)  Vài chuỗi thoát sử dụng trong java:  Xem Roses.java 55 Kiểu dữ liệu  byte  char  boolean  short  int  long  float  double  Array  Class  Interface Java là ngôn ngữ có kiểu rõ ràng, nghĩa là một biến phải có khai báo kiểu. Java cung cấp 2 loại kiểu dữ liệu: 56 Kiểu dữ liệu cơ bản (Primitive)  Kích thước và miền giá trị của các kiểu dữ liệu kiểu số: Type Default Size (bytes) Range Description byte 0 1 -128..127 số nguyên short 0 2 -32768..32767 số nguyên int 0 4 -2 tỉ mốt.. 2 tỉ mốt số nguyên long 0 8 - 9 tỉ tỉ .. 9 tỉ tỉ số nguyên float 0.0 4 +/- 1.45 E-45 .. +/-3.4 E+38, +/- infinity, +/-0, NAN số thực (Not A Number double 0.0 8 +/- 1.79E-324 .. +/-3.4 E+308, +/- infinity, +/-0, NAN số thực char \u0000 2 \u0000 .. \uFFFF ký tự Unicode 57 Kiểu dữ liệu tham chiếu (reference)  Trong Java có 3 loại kiểu dữ liệu tham chiếu: 58 Kiểu Ký tự (char)  Biến kiểu char lưu giữ một ký tự  Hằng ký tự được giới hạn bởi cặp dấu nháy đơn ‘ ‘: 'a' 'X' '7' '$' ',' '\n'  Ví dụ: char topGrade = 'A'; char terminator = ';', separator = ' ';  Sự khác nhau giữa biến kiểu ký tự nguyên thủy và đối tượng String 59 Chuỗi ký tự  Chuỗi ký tự có thể được miêu tả như một hằng chuỗi (string literal) bằng cách đặt chuỗi ký tự trong cặp dấu nháy đôi “ “  Examples: "This is a string literal." "123 Main Street" "X"  Mỗi một chuỗi ký tự là một đối tượng trong Java, được định nghĩa bởi lớp String  Mỗi một chuỗi tương ứng với một đối tượng String 60 Chuyển kiểu dữ liệu  Trong chuyển kiểu dữ liệu, dữ liệu từ một kiểu này được chuyển sang một kiểu dữ liệu khác.  Ví dụ chuyển số thực sang số nguyên float c = 34.89675f; int b = (int)c + 10;  Chuyển dữ liệu chuỗi sang số Integer.parseInt(chuỗi dạng số nguyên) Float.parseFloat(chuỗi dạng số thực) Double.parseDouble(chuỗi dạng số thực)… 61 Chuyển kiểu tự động và ép kiểu  Có 2 loại chuyển kiểu dữ liệu: chuyển tự động và ép kiểu.  Chuyển kiểu tự động chỉ xảy ra khi:  2 kiểu dữ liệu tương thích với nhau  Kích thức kiểu đích lớn hơn kiểu nguồn.  Ép kiểu được sử dụng cho chuyển kiểu tường minh. Thông tin có thể bị mất trong quá trình chuyển kiểu. 62 Những luật chuyển đổi kiểu dữ liệu  Tất cả giá trị kiểu byte và short được chuyển đổi thành kiểu int.  Nếu một toán hạng kiểu long, thì toàn bộ biểu thức được chuyển đổi thành kiểu long.  Nếu một toán hạng kiểu float thì toàn bộ biểu thức được chuyển đổi thành kiểu float.  Nếu một toán hạng kiể