Lập trình Java 2

LI
lienhejb
0 次下载
2
0

资料内容

第 1 页

Tham khảo nhanh về Java Biểu thức Các cấu trúc điều khiển goupee.vn Nguồn: Internet | Dịch: KhoaNV goupee.com Cặp ngoặc tròn () có 3 tác dụng: Lệnh if Chú thích (Comment) // lệnh if với mệnh đề true 1. Nhóm để điều khiển thứ tự tính toán, hoặc để biểu thức rõ ràng. VD: (a + b) * (c - d) if(biểu_thức){ // Mọi nội dung trong dòng này sẽ bị bỏ qua. Đây là loại chú thích được sử dụng phổ biến. 2. Đặt sau tên phương thức để chứa các tham số. VD: x = sum(a, b); Các lệnh // thực hiện nếu biểu thức cho kết quả true /* Mọi thứ (có thể gồm nhiều dòng) trong khối này sẽ bị bỏ qua */. 3. Chứa tên kiểu dữ liệu khi tiến hành ép kiểu. VD: i = (int)x; } Không phổ biến. Sử dụng để chú thích bên ngoài mã nguồn. /** Được sử dụng để giúp tự động tạo ra javadoc dưới dạng HTML. */ Độ ưu tiên của các toán tử // lệnh if với mệnh đề true và false 1. Toán tử có độ ưu tiên cao hơn sẽ được Chỉ cần nhớ thứ tự sau if(biểu_thức){ Định danh\Đặt tên Các lệnh // thực hiện nếu biểu thức cho kết quả true thực hiện trước. 1. các toán tử một ngôi • Các định danh phải bắt đầu với ký tự bảng chữ cái Alphabetic (a-z hoặc A-Z), và các ký tự 2. Thứ tự sẽ từ trái qua phải nếu các toán tử 2. * / % }else{ tiếp theo là chữ cái, chữ số (0-9), hoặc dấu gạch dưới (_). Không sử dụng ký tự ‘$’. có cùng độ ưu tiên, ngoại trừ: một ngôi, 3. + - Các lệnh // thực hiện nếu biểu thức cho kết quả false gán, điều kiện. 4. các toán tử so sánh } • Các từ tiếp theo trong định danh (nếu có) nên bắt đầu với ký tự chữ cái in hoa. 5. && || • Không sử dụng các từ khóa của Java. 6. = các toán tử gán // Lệnh if với nhiều điều kiện kiểm tra song song Sử dụng cặp ( ) cho tất cả những toán tử if(biểu_thức_1){ • Tên lớp và giao tiếp (interface) nên bắt đầu với ký tự chữ cái in hoa Các lệnh // thực hiện nếu biểu thức 1 là true (Graphics, String, Car, Motorbike, ... ). Các toán tử Số học }else if(biểu_thức_2){ Các lệnh // thực hiện nếu biểu thức 2 là true • Tên biến và phương thức nên bắt đầu với ký tự chữ cái in thường Kết quả của các toán tử Số học là double nếu có một toán hạng là double, trái lại là float nếu có một toán hạng là float, trái lại là long nếu có một toán hạng là long, trái lại là int. }else if(biểu_thức_3){ (repaint(), x, ...). Các lệnh // thực hiện nếu biểu thức 3 là true i++ Cộng thêm 1 cho i }else{ • Các hằng giá trị nên sử dụng toàn bộ chữ in hoa và dùng dấu gạch dưới (_) để phân cách các i-- Bớt 1 từ i từ Các lệnh // thực hiện khi các biểu thức trên là false n + m Phép cộng. VD 7 + 5 bằng 12, 3 + 0.14 bằng 3.14 } (BoxLayout.X_AXIS, Math.PI, ...). n - m Phép trừ n * m Phép nhân. VD 3 * 6 bằng 18 Lệnh switch Biến cục bộ, Biến đối tượng, Biến tĩnh n / m Phép chia. VD 3.0 / 2 bằng 1.5, 3 / 2 bằng 1 Biến có thể là biến cục bộ (local), biến đối tượng (instance),hoặc biến tĩnh (static hay còn gọi là n % m Phép chia lấy phần dư (Mod). VD 7 % 3 bằng 1 switch cho phép chọn một trường hợp nào đó phụ thuộc vào giá trị nhận được (thường là số biến lớp). Các tham số được coi là những biến cục bộ, chúng được gán giá trị khi phương thức nguyên) từ biến hoặc biểu thức. được triệu gọi. So sánh các giá trị nguyên thủy switch(biểu_thức){ case c1: Kết quả của các toán tử so sánh là boolean (true hoặc false). Các lệnh // thực hiện khi biểu thức = c1 Biến cục bộ Biến đối tượng Biến tĩnh = =, !=, <, <=, >, >= break; case c2: Nơi khai báo? Trong phương thức. Trong lớp, nhưng Trong lớp và sử Các toán tử Lô-gíc Các lệnh // thực hiện khi biểu thức = c2 không trong phương dụng thêm từ khóa break; thức. static. Các toán hạng phải có kiểu là boolean. Kết quả là boolean. b && c “Và”. Kết quả là true nếu cả hai toán hạng đều là true, trái lại sẽ là false. case c3: Giá trị khởi tạo Phải được gán giá trị trị Kiểu số: 0 Kiểu số: 0 case c4: trước khi sử dụng và Đối tượng: null Đối tượng: null Đánh giá đoản mạch. VD (false && anything) cho kết quả false. trình biên dịch sẽ báo lỗi Boolean: false Boolean: false b || c “Hoặc”. Kết quả là true nếu bất cứ toán hạng nào true, trái lại sẽ là false. case c5: // các trường hợp cùng chung xử lý. nếu không làm việc này. Hoặc được khởi tạo Hoặc được khởi tạo Đánh giá đoản mạch. VD(true || anything) cho kết quả là true. // thực hiện khi biểu thức = c3, c4 hoặc c5 giá trị trong hàm trong khối khởi tạo !b “Phủ định”. Kết quả là true nếu b là false, là false nếu b là true. Các lệnh tạo. tĩnh. break; Các toán tử Gán default: Phạm vi sử dụng Chỉ trong phương thức private: Chỉ các Giống với Biến đối chứa nó. Không có khả phương thức của lớp. tượng. = Vế trái bắt buộc phải là một định danh\biến. Các lệnh năng hiển thị có thể (Mặc định): Tất cả các += -= *= ... // thực hiện khi mà biểu thức không bằng giá trị nào ở trên được khai báo. phương thức thuộc các Tất cả các toán tử hai ngôi (ngoại trừ && và || ) đều có thể kết hợp với toán tử gán. } lớp cùng gói VD: a += 1 tương tự như a = a + 1 (package). public: Bất cứ đâu đều Lệnh lặp while Ép kiểu có thể truy xuất. while(biểu_thức){ protected: Lớp chứa Ép kiểu được sử dụng khi “thu hẹp” dải giá trị nào đó. Phạm vi từ hẹp nhất đến rộng nhất của nó và tất cả các lớp // thực hiện lặp lại các mệnh lệnh cho tới khi kiểu dữ liệu nguyên thủy là: byte, short, char, int, long, float, double. Các đối tượng có thể được con (subclass). gán mà không cần ép kiểu lên cấp cao hơn trong cây phân cấp kế thừa. Ép kiểu chỉ cần khi ép // biểu thức cho kết quả false Được tạo ra khi Khi phương thức được Khi một đối tượng của Khi chương trình được xuống cấp thấp hơn trong cây phân cấp (ép xuống). } nào? sử dụng. lớp được tạo mới. nạp. (t)x Ép kiểu của x sang kiểu t Lệnh lặp for Toán tử Đối tượng Được lưu trữ ở Stack Heap Vùng nhớ "Bền for(Khởi tạo biến đếm; điều kiện lặp; thay đối biến đếm) { đâu? vững" co.f Thành phần. Thuộc tính hoặc phương thức f của đối tượng hoặc lớp co. // thực hiện lặp lại các mệnh lệnh cho tới khi Khi nào được giải Khi phương thức trả về Khi không còn tham Khi chương trình kết x instanceof co Cho kết quả true nếu đối tượng tham chiếu bởi x là thể hiện của lớp co. // biểu thức điều kiện lặp cho kết quả false phóng? kết quả. chiếu nào dành cho thúc. s + t Toán tử cộng chuỗi nếu một hoặc cả hai toán tử có kiểu là String. x == y Cho kết quả là true nếu cả x và y cùng tham chiếu tới một đối tượng, trái lại sẽ là } đối tượng. false (thậm chí cả khi giá trị của các đối tượng này giống nhau!). while và for có thể thay thế cho nhau: x != y Phủ định của toán tử trên. Các kiểu dữ liệu nguyên thủy Lưu ý: So sánh các đối tượng sử dụng phương thức .equals() hoặc .compareTo() int i = 0; for (i=0; i<5; i++) { x = y Sao chép tham chiếu đối tượng chứ không phải sao chép đối tượng. while(i<5){ System.out.print("Hi!"); boolean (với chỉ hai giá trị true/false) fb.com/goupee.vn System.out.print("Hi!"); } Các kiểu số học: byte, short, char, int, long, float, double i++; }

第 2 页

Những điều khiển lặp khác b = s.equalsIgnoreCase(t) tương tự như trên nhưng không phân biệt ký tự in hoa, in goupee.vn // Sử dụng vòng lặp for chuẩn. // Sử dụng vòng lặp for nâng cao.goupee.com Tất cả các lệnh lặp đều có thể được đặt nhãn, vì vậy có thể dùng lệnh break và continue cho bất cứ thường int[] scores = new int[12]; int[] scores = new int[12]; cấp độ lồng nhau nào của vòng lặp. b = s.startsWith(t) cho kết quả true nếu chuỗi s chứa chuỗi t ở đầu ...Khởi tạo các giá trị cho mảng scores ...Khởi tạo các giá trị cho mảng scores b = s.endsWith(t) cho kết quả true nếu chuỗi s chứa chuỗi t ở cuối int total = 0; int total = 0; break; //thoát khỏi vòng lặp hoặc lệnh switch gần nhất chứa nó for (int i = 0; i <scores.length; i++) for(int scr : scores){ break label; // thoát khỏi vòng lặp được đặt nhãn (label) { total += scr; continue; //tiến hành lượt lặp tiếp theo Tìm kiếm trong chuỗi (tất cả các phương thức "indexOf" đều trả về -1 nếu không tìm thấy total += scores[i]; } continue label; //tiến hành lượt lặp tiếp theo với vòng lặp được kết quả) } đặt nhãn (label). i = s.indexOf(t) trả về vị trí đầu tiên xuất hiện chuỗi t trong chuỗi s. Nhãn được đặt trước vòng lặp cùng dấu hai chấm, ví dụ: Mảng hai chiều outer: i = s.indexOf(t, i) trả về vị đầu tiên trí tính từ i xuất hiện chuỗi t trong chuỗi s. for (. . .) { i = s.lastlndexOf(t) trả về vị trí cuối cùng xuất hiện chuỗi t trong chuỗi s. i = s.lastIndexOf(t, i) trả về vị trí cuối cùng tính từ i xuất hiện chuỗi t trong chuỗi s. Hầu hết được xử lý với vòng lặp for lồng nhau. Ví dụ: . . . continue outer; static final int ROWS = 2; static } Lấy một phần của chuỗi final int COLS = 4; … Ngoại lệ (Exception) c = s.charAt(i) trả về ký tự tại vị trí i trong chuỗi s. int[][] a2 = new int[ROWS][COLS]; sl= s.substring(i) trả về một chuỗi con của chuỗi s tính từ vị trí i đến cuối. // ... Hiển thị các phần tử mảng trong khung hình chữ nhật Sử dụng try...catch cho các ngoại lệ sl= s.substring(i, j) trả về một chuỗi con của s tình từ vị trí i đến ngay trước vị trí j. for(int i =0; i < ROWS; i++){ try{ Tạo mới một chuỗi từ chuỗi ban đầu for(int j = 0; j < COLS; j++){ . . . // các lệnh có thể dẫn tới ngoại lệ Systern.out.print(" " + a2[i][j]); }catch(Kiểu_ngoại_lệ x){ sl= s.toLowerCase() tạo một chuỗi mới ở dạng in hoa toàn bộ } . . . // các lệnh để xử lý khi có ngoại lệ sl= s.toUpperCase() tạo một chuỗi mới ở dạng in thường toàn bộ Systern.out.println(""); } sl= s.trim() cắt bỏ các ký tự trắng ở đầu và cuối chuỗi } throw sl= s.replace(cs2, cs3) thay thế tất cả các chuỗi con cs2 trong s bằng chuỗi cs3 Scanner throw đối_tượng_ngoại_lệ; StringBuilder Tác dụng chính của java.util.Scanner là giúp đọc các giá trị từ System.in hoặc từ tệp tin. Sử dụng nhiều mệnh đề catch và mệnh đề finally Khả năng sửa đối nhanh hơn so với String, sử dụng bộ nhớ và CPU hiệu quả hơn. sc = new Scanner(System.in); Sử dụng để đọc dữ liệu từ System.in Thực hiện mệnh đề catch đầu tiên tương ứng với ngoại lệ được chỉ ra bởi lớp ngoại lệ hoặc các lớp sb = new StringBuilder() Tạo một StringBuilder rỗng sc = new Scanner(s); Sử dụng để đọc giá trị từ chuỗi s. ngoại lệ cha. Mệnh đề finally luôn được thực hiện (bất kể là có hay không có ngoại lệ xảy ra) vì sb = new StringBuilder(s) Tạo một StringBuilder từ chuỗi s. Các phương thức lấy dữ liệu phổ biến nhất vậy các tài nguyên sử dụng trước đó có thể được giải phóng (ví dụ, đóng tệp tin): sb = sb.append(x) Thêm x (bất kể kiểu dữ liệu)vào cuối sb. try{ sb = sb.insert(offset, x) Chèn x (bất kể kiểu dữ liệu) vào sb tại vị trí offset. s = sc.next() Trả về "token" tiếp theo, nhiều hơn hoặc ít là một "word". . . . // các lệnh có khả năng xảy ra ngoại lệ sb = sb.setCharAt(index, c) Thay thế ký tự tại vị trí index bằng ký tự c. s = sc.nextLine() Trả về toàn bộ một dòng dữ liệu dưới dạng một chuỗi. }catch(kiểu_ngoại_lệ x){ . . . // cách lệnh xử lý ngoại lệ sb = sb.deleteCharAt(i) Xóa ký tự tại vị trí i. x = sc.nextXYZ() Trả về giá trị có kiểu là XYZ: } catch (kiểu_ngoại_lệ x) { sb = sb.delete(beg, end) Xóa các ký tự từ vị trí beg tới vị trí end. Int, Double, Boolean, Byte, Float, Short . . . // cách lệnh xử lý ngoại lệ sb = sb.reverse() Đảo ngược nội dung. b = sc.hasNext() Trả về true nếu còn “token” để đọc. }finally{ sb = sb.replace(beg, end, s) Thay thế các ký tự từ vị trí beg tới vị trí end bằng s. b = sc.hasNextLine() Trả về true nếu còn dòng dữ liệu để đọc. // các lệnh luôn luôn được thực hiện Có các phương thức indexOf, lastlndexOf, charAt, equals, substring giống như String! b = sc.hasNextXYZ() Trả về true nếu loại còn dữ liệu XYZ để đọc. // bất kể có xảy ra ngoại lệ hay không . . . Mảng Nhập\Xuất tệp tin Văn bản } Sửdụng đểthao tác với nhiều phần tửdữliệu, có thể là dữ liệu nguyên thủy hoặc các đối tượng. Tất cả Ví dụ: Chuỗi các phần tử phải cũng kiểu dữ liệu.Mảng không có khả năng mở rộng! public static void copyFile(File fromFile, Cộng chuỗi Ví dụ: File toFile) throws IOException { int [] scores; // Khai báo scores là mảng các số nguyên. Toán tử + cho phép nối hai chuỗi lại với nhau. Nếu một toán hạng là String, toán hạng còn lại sẽ Scanner freader = new Scanner(fromFile); scores = new int[12]; // Khởi tạo vùng nhớ cho mảng với 12 phần tử. được chuyển đổi sang kiểu String và sau đó được cộng với nhau. Đây thường là cách dùng để BufferedWriter writer = new BufferedWriter(new FileWriter(toFile)); chuyển đổi các số sang String. int[] scores = new int[12]; // Kết hợp cả khai báo và khởi tạo. Nếu một đối tượng không phải là String khi được cộng với String phương thức toString() của nó //... Lặp cho tới khi vẫn còn dòng dữ liệu từ tệp đầu vào. Khởi tạo một mảng sẽ được triệu gọi. Một tiện ích dành cho việc ra soát bug đó là viết trong các lớp của bạn phương String line = null; thức toString(). Nếu các phần tử của mảng không được gán giá trị khởi tạo, chúng sẽ được khởi tạo là 0 với các while (freader.hasNextLine()) { mảng số, null với các mảng tham chiếu đối tượng, và false với các mảng boolean. line = freader.nextLine(); "abc" + "def" "abcdef" Tạo mảng vào khởi tạo giá trị cho phần tử mảng với một dòng lệnh: writer.write(line); "abc" + 4 "abc4" String[] names = {"Mickey", "Minnie", "Donald"}; "1" + 2 "12" Hoặc có thể tách thành nhiều dòng lệnh: writer.newLine(); // Viết sang dòng khác trong tệp tin. "xyz" + (2+2 == 4) "xyztrue" String[] names = new String[3]; } 1 + "2.5" "12.5" names[0] = "Mickey"; //... Đóng bộ đọc và ghi tệp tin. names[1] = "Minnie"; freader.close(); // Đóng để bỏ khóa đối với tệp tin. i = s.length() cho phép để xác định độ dài của chuỗi s. names[2] = "Donald"; writer.close(); // Đóng để bỏ khóa đối với tệp tin và đẩy toàn bộ dữ liệu xuống ổ đĩa. So sánh chuỗi (sử dụng thay thế cho toán tử == và !=) Truy cập phần tử mảng } i = s.compareTo(t) được sử dụng để so sánh chuỗi s với t. scores[5] = 86; // Gán cho phần tử có chỉ số là 5 giá trị 86. trả về <0 nếu s < t, 0 nếu s == t, >0 nếu s > t scores[i]++; // Tăng một đơn vị cho phần tử có chỉ số là i. i = s.compareToIgnoreCase(t) tương tự như trên nhưng không phân biệt ký tự in hoa, Duyệt lần lượt qua các phần tử mảng in thường. b = s.equals(t) cho kết quả true nếu hai chuỗi có cùng giá trị. Kích thước của một mảng có thểfb.com/goupee.vnđược xác định bằng cách sử dụng thuộc tính length của chúng, VD, scores.length

显示前 2 页。下载资料查看完整内容。

评论 (0)

登录 以加入讨论

暂无评论。快来抢沙发吧!