Lập trình Java cơ bản - Nguyễn Hữu Thể

? 1990: Ngôn ngữ Oak đuợc tạo ra bởi James Gosling trong dự án Green của Sun MicroSystems nhằm phát triển phần mềm cho các thiết bị dân dụng. ? 1995: Oak đổi tên thành Java.

pdf60 trang | Chia sẻ: lylyngoc | Lượt xem: 1677 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Lập trình Java cơ bản - Nguyễn Hữu Thể, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1 LẬP TRèNH JAVA JAVA CƠ BẢN Nguyễn Hữu Thể 2 java - sơ lƯợc về ngôn ngữ  Lịch sử phát triển:  1990: Ngôn ngữ Oak được tạo ra bởi James Gosling trong dự án Green của Sun MicroSystems nhằm phát triển phần mềm cho các thiết bị dân dụng.  1995: Oak đổi tên thành Java. 3 Chương trỡnh dịch Java “Write One, Run Any Where” 4 Chương trỡnh dịch Java 5 Java development kit (JDK) Bộ phát triển ứng dụng java gồm:  javac: trình biên dịch ngôn ngữ java thành mã byte code  java (máy ảo java - Java Virtual Machine): Thông dịch mã bytecode của các chương trình kiểu application thành mã thực thi của máy đích.  appletviewer: Bộ thông dịch thực thi applet.  javadoc: Tạo tài liệu tự động.  jdb: Gở rối.  rmic: Tạo stub cho ứng dụng kiểu RMI.  rmiregistry: Phục vụ tên (Name Server) trong hệ thống RMI 6 Download JDK 7 Download JDK 8 Tool  Notepad  NotePad ++  Netbeans  Eclipse 9 Tool  Notepad  NotePad ++  Netbeans  Eclipse 10 Tool  Eclipse 11 Chương trỡnh Java đầu tiờn public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } Kiểu dữ liệu cơ sở  Là cỏc dữ liệu được xỏc định trong ngụn ngữ 12 13 Kiểu mảng // Long syntax int[] numbers = new int[5] {20, 1, 42, 15, 34}; // Short syntax int[] numbers2 = {20, 1, 42, 15, 34}; int[][] numbers = new int[3][3]; int[][] numbers2 = {{2, 3, 2}, {1, 2, 6}, {2, 4, 5}}; 14 Kiểu mảng int[] anArray; // declares an array of integers anArray = new int[10]; //create an array of integers anArray[0] = 100; // initialize first element anArray[1] = 200; // initialize second element anArray[2] = 300; // etc.  Mảng kiểu chuỗi String[][] names = {{"Mr. ", "Mrs. ", "Ms. "}, {"Smith", "Jones"}}; String a = names[0][0] //Mr String b = names[1][0]); //Smith Giỏ trị mặc định  Lỗi hay gặp phải khi lập trỡnh là sử dụng biến chưa khởi tạo  Java hỗ trợ khởi tạo cỏc giỏ trị mặc định cho cỏc biến. 15 Chuyển đổi kiểu dữ liệu  Dựng để chuyển từ một kiểu dữ liệu này sang kiểu dữ liệu khỏc  Cú 2 dạng ộp kiểu:  ẫp kiểu ngầm định  ẫp kiểu tường minh 16 Chuyển đổi kiểu dữ liệu (2) 17 ẫp kiểu ngầm định  Khi một kiểu dữ liệu được gỏn cho 1 biến của 1 kiểu khỏc  tự động chuyển kiểu  Điều kiện:  Hai kiểu phải tương thớch  Kiểu đớch phải lớn hơn kiểu nguồn 18 ẫp kiểu tường minh  Khi cần chuyển sang kiểu cú độ chớnh xỏc cao hơn 19 Định dạng nhập xuất  Mó định dạng: bất kỡ một đầu ra được hiển thị trờn màn hỡnh cần phải được định dạng 20 Định dạng nhập xuất (2)  Hàm printf() trong Java được sử dụng để định dạng kiểu dữ liệu ở console  Vớ dụ: public static void main(String[] args) { int i = 10; System.out.printf("gia tri cua i la %d", i); } 21 Lớp Scanner  Cho phộp người dựng đọc giỏ trị của một vài kiểu  Một số phương thức của Scanner: public static void main(String[] args) { Scanner scaner = new Scanner(System.in); } Đối tượng InputStream 22 Dóy Escape 23 Toỏn tử luận lý  Cỏc biểu thức cú kiểu trả về là boolean, cú thể kết hợp lại với nhau bằng cỏc toỏn tử luận lý như:  AND (& hoặc &&)  OR (| hoặc ||)  XOR (^)  NOT (!) 24 25 Toỏn tử 26 Toỏn tử 27 Toỏn tử 28 Toỏn tử 29 Cỏc toỏn tử làm việc với bit  Phộp toỏn trờn bit:  & , | , ^ , > ,>>>, ~ int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ c = a | b; /* 61 = 0011 1101 */ c = a ^ b; /* 49 = 0011 0001 */ c = ~a; /*-61 = 1100 0011 */ c = a << 2; /* 240 = 1111 0000 */ c = a >> 2; /* 15 = 1111 */ c = a >>> 2; /* 15 = 0000 1111 */ Biểu thức & toỏn tử  Phộp toỏn trờn kiểu chuỗi String:  Java dựng toỏn tử + để nối hai chuỗi lại với nhau  Độ ưu tiờn của cỏc toỏn tử System.out.println(name + " is a " + color); 30 Tớnh kết hợp của cỏc phộp toỏn 31 Từ khúa Từ khúa í nghĩa abstract Dựng để khai bỏo lớp, hàm trừu tượng. boolean Kiểu dữ liệu logic break Được sử dụng để kết thỳc vũng lặp hoặc cấu trỳc switch. byte Kiểu dữ liệu số nguyờn. case Được sử dụng trong lệnh switch. char Kiểu dữ liệu kớ tự. catch Được sử dụng trong xử lý ngoại lệ. class Dựng để khai bỏo lớp. const Khai bỏo biến theo sau là biến hằng continue Được dựng trong vũng lặp để bắt đầu một vũng lặp mới. default Được sử dụng trong lệnh switch. do Được sử dụng trong vũng lặp điều kiện sau. 32 Từ khúa (2) Từ khúa í nghĩa double Kiểu dữ liệu số thực. else Khả năng lựa chọn thứ 2 trong cõu lệnh If. extends Chỉ rằng một lớp được kế thừa từ một lớp khỏc. false Giỏ trị logic. final Dựng để khai bỏo hằng số, phương thức khụng thể ghi đố, hoặc lớp khụng thể kế thừa. finally Phần cuối của khối xử lý ngoại lệ. float Kiểu số thực. for Cõu lệnh lặp. goto Nhảy tới dũng lệnh bất kỡ đó được đặt nhón if Cõu lệnh lựa chọn. implements Chỉ rằng một lớp triển khai từ một giao diện. import Khai bỏo sử dụng thư viện. 33 Từ khúa (3) Từ khúa í nghĩa instance of Kiểm tra một đối tượng cú phải là một thể hiện của một lớp hay khụng. int Kiểu số nguyờn. interface sử dụng để khai bỏo giao diện. long Kiểu số nguyờn. native Khai bỏo phương thức được viết bằng ngụn ngữ C++. new Tạo một đối tượng mới. null Một đối tượng khụng tồn tại. package Dựng để khai bỏo một gúi. private Đặc tả truy xuất. public Đặc tả truy xuất. protected Đặc tả truy xuất. return Trả giỏ trị về short Kiểu số nguyờn. 34 Từ khúa (4) Từ khúa í nghĩa static Dựng để khai bỏo biến, thuộc tớnh tĩnh. super Truy xuất đến lớp cha. switch Lệnh lựa chọn. synchronized Một phương thức độc quyền truy xuất trờn một đối tượng. this Ám chỉ chớnh lớp đú. throw Nộm ra ngoại lệ. throws Khai bỏo phương thức nộm ra ngoại lệ. true Giỏ trị logic. try Sử dụng để bắt ngoại lệ. void Dựng để khai bỏo một phương thức khụng trả về giỏ trị. while Dựng trong cấu trỳc lặp. 35 36 java - ứng dụng kiểu application (2)  Ví dụ ứng dụng HelloWorld:  Định nghĩa trong lớp HelloWorld  Chứa trong tập tin HelloWorld.java  Chú giải: System.out.print() : in ra màn hình 37 ví dụ (1)  In ra màn hình:  Sử dụng phương thức System.out.print(arg1 + arg2+ ...+argn);  arg1, arg2, argn: các tham số có kiểu tùy ý. 38 ví dụ (2)  Đọc ký tự từ bàn phím:  Sử dụng phương thức int System.in.read();  Giá trị trả về là thứ tự trong bảng mã ascii của các ký tự nhận từ bàn phím. 39 java - cấu trúc điều khiển  Lệnh if - else  Phép toán ?  Lệnh switch  While  Do - while  For  Break  Continue  Return 40 Lệnh if - else if ( condition ) { Task for the true condition; } else { Task for the false condition; } 41 Phép toán ?  Phép toán ?:(condition) ? Operation1 : Operation2; if ( condition == true ) { return value of Operation1; } else { return value of Operation2 ;} 42 Lệnh switch switch ( variable ) { case value1 : { Task 1; break; } case value2 : { Task 2; break; } . . . default: Task n; } 43 Lệnh switch 44 while while (condition == true){ The condition is true, so we have to do this task; } 45 do - while do { Do this task until the condition gets false; } while (condition ==true) ; 46 for for (khởi tạo; điều kiện; bước tăng/giảm){ The condition is true, so we do this task; operation2; } 47 Lệnh break  Vòng lặp sẽ kết thúc khi gặp lệnh break; 48 Lệnh continue Các lệnh sau lệnh continue sẽ bị bỏ qua, một chu kỳ lặp mới bắt đầu. 49 Đổi chuỗi thành số 50 Truyền đối số qua dũng lệnh  Đối số của chương trỡnh  Các đối số đa vào chương trình cách nhau khoảng trắng trên dũng lệnh.  Các đối số chứa trong một mảng kiểu chuỗi (String) : args.  Số lượng đối số chỉ ra bởi thuộc tính length của mảng. Try-catch-finally  Sử dụng khối try, catch, finally để bắt giữ cỏc ngoại lệ Khối lệnh cú thể nộm ngoại lệ Khối lệnh sẽ thực hiện nếu ngoại lệ xảy ra Khối lệnh sẽ thực hiện bất chấp ngoại lệ xảy ra hay khụng 51 Chuỗi (String)  Java hỗ trợ Unicode  mỗi kớ tự dài 16 bit  Vớ dụ hằng chuỗi  System.out.println(“Hello world”);  Ghộp chuỗi:  Dựng cỏc toỏn tử + và += để ghộp chuỗi.  Vớ dụ: double distance = 45.5; System.out.println("Distance = "+ distance +" miles."); Distance = 45.5 miles. Chuỗi Khai bỏo và sử dụng kớ tự  char cú độ dài 2 bytes và chứa cỏc số nguyờn khụng dấu.  Hằng kớ tự được biểu diễn trong dấu nhỏy đơn (’)  Cú thể nhập cỏc kớ tự đơn bằng dóy escape sequence \uxxx chỉ định thứ tự theo thập lục phõn. char c = '\u0a76'; System.out.println("Char = "+ c); String - Constructor  public String() ;  public String(String original);  public String(char value[]);  public String(char value[], int offset, int count);  public String(int[] codePoints, int offset, int count);  public String(byte bytes[], int offset, int length, String charsetName);  public String(byte bytes[], int offset, int length, Charset charset); (1.6)  public String(byte bytes[], String charsetName);  public String(byte bytes[], Charset charset); (1.6)  public String(byte bytes[], int offset, int length);  public String(byte bytes[])  public String(StringBuffer buffer);  public String(StringBuilder builder);  public String(byte ascii[], int hibyte, int offset, int count);  public String(byte ascii[], int hibyte); String  Vớ dụ:  String s = new String();  Chỳ ý: • Kớ tự trong Java là kớ tự 16bit, khụng phải ASCII 8 bit • Cỏc encoding (charset): cỏc chế độ mó húa kớ tự nền được sử dụng trong hệ thống để chuyển đổi kớ tự ASCII thành Unicode. – VD: UTF-8, UTF-16, US-ASCII, ISO-8859-1, … Chiều dài =0 Cỏc phương thức chuỗi String  Demo:  Phương thức kiểm tra lớp String • length(), charAt(), getChars(..), getBytes(…), hashCode()  Phương thức so sỏnh lớp String • equals(…), equalsIgnoreCase(…), compareTo(…), compareToIgnoreCase (…), regionMatches(…), startsWith(…), endWith(…)  Phương thức lập chỉ mục lớp String • indexOf(…), lastIndexOf(…)  Phương thức chuyển đổi lớp String • substring(…), concat(…), replace(…), toLowerCase(…), toUpperCase(…), trim(), toCharArray(…), intern() Cỏc phương thức chuỗi  Demo  Tớnh dung lượng và chiều dài lớp StringBuffer: • length(), capacity(), ensureCapacity(…), setLength(…)  Phương thức char của StringBuffer • charAt(…), getChars(…), setCharAt(…)  Nối thờm lớp StringBuffer • append(…)  Xúa, thay thế • delete(…), replace(…)  Chuỗi con • substring(…)  Chốn lớp • insert(…)  Khỏc • reverse(), toString(), readObject(…) Lớp Character Useful Methods in the Character Class Method Description boolean isLetter(char ch) boolean isDigit(char ch) Determines whether the specified char value is a letter or a digit, respectively. boolean isWhiteSpace(char ch) Determines whether the specified char value is white space according to the Java platform. boolean isUpperCase(char ch) boolean isLowerCase(char ch) Determines whether the specified char value is upper- or lowercase, respectively. char toUpperCase(char ch) char toLowerCase(char ch) Returns the upper- or lowercase form of the specified char value. toString(char ch) Returns a String object representing the specified character value. int digit(char ch, int radix) Returns the numeric value of the character in the specified radix. 58 Vớ dụ Cỏc kớ số Character  Character rất hữu ớch khi: chuyển đổi kớ tự thành số nguyờn trong 1 cơ số. int digit = 12; char c = Character.forDigit(digit, 16); System.out.println(digit + " = " + c); char c = 'F'; int digit = Character.digit(c, 16); System.out.println(c + " = "+ digit);