Đăng ký Đăng nhập
Trang chủ Công nghệ thông tin Kỹ thuật lập trình Lập trình java cơ bản - chương 3 cu phap java co ban...

Tài liệu Lập trình java cơ bản - chương 3 cu phap java co ban

.PDF
11
380
107

Mô tả:

1/20/2014 Bộ môn Hệ thống thông tin Mục tiêu bài học VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Nêu được các quy ước đặt tên trong các chương trình Java Tạo ra các định danh hợp lệ Mô tả các kiểu dữ liệu cơ bản trong Java và cách sử dụng Các toán tử Sử dụng các câu lệnh điều kiện, cấu trúc lặp và rẽ nhánh Giải thích về phạm vi của biến Khai báo, khởi tạo các biến và mảng trong Java NHẬP MÔN JAVA Chương 03. Cú pháp Java cơ bản TS. Nguyễn Bình Minh [email protected] 1 Department of Information Systems 1. Định danh Nội dung 1. 2. 3. 4. 5. 6. 7. 8. Định danh: Định danh Các kiểu dữ liệu Hằng giá trị Ép kiểu dữ liệu Toán tử Cấu trúc điều khiển Mảng Tham số dòng lệnh Department of Information Systems   Xâu ký tự thể hiện tên các biến, các phương thức, các lớp và nhãn Phân biệt chữ hoa, chữ thường Các ký tự có thể là chữ số, chữ cái, '$' hoặc „_‟ Tên không được phép:   Bắt đầu bởi một chữ số Trùng với từ khóa Department of Information Systems 3 1. Định danh 1. 2. 3. 4. 5. 6. 7. 8. yourname, yourName, Yourname, YourName là 4 định danh khác nhau Quy ước:  Gói (package): tất cả sử dụng chữ thường  Lớp (Class): viết hoa chữ cái đầu tiên trong các từ ghép lại theexample TheExample  Phương thức/thuộc tính (method/field): Bắt đầu bằng chữ thường, viết hoa chữ cái đầu tiên trong các từ còn lại theExample  Hằng (constants): Tất cả viết hoa THE_EXAMPLE Department of Information Systems 4 Nội dung Phân biệt chữ hoa - chữ thường (case-sensitive)  2 5 Định danh Các kiểu dữ liệu Hằng giá trị Ép kiểu dữ liệu Toán tử Cấu trúc điều khiển Mảng Tham số dòng lệnh Department of Information Systems 7 1 1/20/2014 2. Các kiểu dữ liệu Kiểu dữ liệu nguyên thủy Trong Java kiểu dữ liệu được chia thành hai loại:  Mọi biến đều phải khai báo một kiểu dữ liệu Kiểu dữ liệu nguyên thủy (primitive) Số nguyên (interger) Số thực (float) Ký tự (char) Boolean    Kiểu dữ liệu tham chiếu (reference) Java phân loại thành 4 kiểu dữ liệu nguyên thủy Mảng (array) Lớp (class) Giao diện (interface)  Sẽ được học trong phần sau Department of Information Systems 8 2.1. Số nguyên 10 Department of Information Systems 11 Ví dụ Ký tự Unicode không dấu, được đặt giữa hai dấu nháy đơn 2 cách gán giá trị:  9 Có thể phân thành từng phần Khởi tạo với giá trị 0.0 2.3. Ký tự  Department of Information Systems 2.2. Số thực Số nguyên có dấu Khởi tạo với giá trị 0 Department of Information Systems Các kiểu dữ liệu cơ bản chứa một giá trị đơn Kích thước và định dạng phải phù hợp với kiểu của nó Sử dụng các chữ số trong hệ 16: char uni ='\u05D0'; Sử dụng ký tự: char a = „A‟; //Các bit thể hiện giá trị số -1 short s = (short) 0xffff; //Các bit tương tự, thể hiện một ký tự Unicode char c = '\uffff'; Giá trị mặc định là giá trị zero (\u0000) // Chuyển từ kiểu short thành int giá trị -1 int i1 = s; //Chuyển từ kiểu char thành int giá trị 65535 int i2 = c; Department of Information Systems 12 Department of Information Systems 13 2 1/20/2014 2.4. Boolean 2.4. Boolean (2) Giá trị boolean được xác định rõ ràng trong Java   Giá trị boolean được xác định rõ ràng trong Java Một giá trị int không thể sử dụng thay cho giá trị boolean Một biến boolean có thể lưu trữ giá trị hoặc true hoặc false   Biến boolean được khởi tạo là false Department of Information Systems Biến boolean được khởi tạo là false Department of Information Systems 14 Nội dung 1. 2. 3. 4. 5. 6. 7. 8. Một literal là một giá trị của các kiểu dữ liệu nguyên thủy. Gồm 5 loại: Literals  integer integer…………..7  floating point floating point…7.0f  boolean boolean……….true  character character……….'A'  string string………….."A" Department of Information Systems 16 3. Giá trị hằng (2) b. Số thực: Hệ cơ số 8 (Octals) bắt đầu với chữ số 0  float literal kết thúc bằng ký tự f (hoặc F)  double literal kết thúc bằng ký tự d (hoặc D) 7.1f 032 = 011 010(2) = 16 + 8 + 2 = 26(10)  Hệ cơ số 16 (Hexadecimals) bắt đầu với 0 và ký tự x 7.1D  0x1A = 0001 1010(2) = 16 + 8 + 2 = 26(10)  Kết thúc bởi ký tự “L” thể hiện kiểu dữ liệu long  Ký tự hoa, thường cho giá trị bằng nhau 0x1a , 0x1A , 0X1a , 0X1A đều có giá trị 26 trong hệ decimal Department of Information Systems e (hoặc E) được sử dụng trong dạng biểu diễn khoa học: 7.1e2 26L  17 3. Giá trị hằng (3) a. Số nguyên:  15 3. Giá trị hằng (literal) Định danh Các kiểu dữ liệu Hằng giá trị Ép kiểu dữ liệu Toán tử Cấu trúc điều khiển Mảng Tham số dòng lệnh Department of Information Systems Một giá trị int không thể sử dụng thay cho giá trị boolean Một biến boolean có thể lưu trữ giá trị hoặc true hoặc false Một giá trị thực mà không có ký tự kết thúc đi kèm sẽ có kiểu là double 7.1 giống như 7.1d 18 Department of Information Systems 19 3 1/20/2014 3. Giá trị hằng (4) 3. Giá trị hằng (5) * Escape sequence: c. boolean:   true false  \b \f \n \r \t d. Ký tự:   Được đặt giữa 2 dấu nháy đơn Ví dụ: „a‟, „A‟ hoặc '\uffff'   Được đặt giữa hai dấu nháy kép Ví dụ: “Hello world”, “Xin chao ban”,… Department of Information Systems backspace form feed newline carrage return tab Hiển thị các ký tự đặc biệt trong xâu \" quotation mark \‟ apostrophe \\ backslash e. Xâu ký tự:  Các ký tự điều khiển nhấn phím Department of Information Systems 20 Nội dung 21 4. Ép kiểu dữ liệu (Casting) Java là ngôn ngữ định kiểu chặt 1. 2. 3. 4. 5. 6. 7. 8. Định danh Các kiểu dữ liệu Hằng giá trị Ép kiểu dữ liệu Toán tử Cấu trúc điều khiển Mảng Tham số dòng lệnh Department of Information Systems  Gắn sai kiểu giá trị cho một biến có thể dẫn đến các lỗi biên dịch hoặc các ngoại lệ của JVM Ép kiểu dữ liệu cho phép sử dụng nó như một kiểu dữ liệu khác JVM có thể ngầm định chuyển từ một kiểu dữ liệu hẹp sang một kiểu rộng hơn Để chuyển sang một kiểu dữ liệu hẹp hơn, cần phải định kiểu rõ ràng. int a, b; short c; a = b + c; int d; short e; e = (short)d; double f; long g; f = g; g = f; //error Department of Information Systems 22 4. Ép kiểu dữ liệu (2) Khởi tạo biến đơn Chuyển đổi kiểu sẽ được thực hiện tự động nếu không xảy ra mất mát thông tin Các biến đơn (biến không phải là mảng) cần phải được khởi tạo trước khi sử dụng trong các biểu thức  byte  short  int  long  float  double  Ép kiểu trực tiếp (explicit cast) được yêu cầu nếu có “nguy cơ” giảm độ chính xác  Có thể kết hợp khai báo và khởi tạo cùng một lúc. Sử dụng = để gán (bao gồm cả khởi tạo) Ví dụ: int i, j; // Khai báo biến i = 0; int k=i+1; // Khai báo và khởi tạo cùng lúc float x=1.0, y=2.0; System.out.println(i); // In ra 0 System.out.println(k); // In ra 1 System.out.println(j); // Lỗi biên dịch long p = (long) 12345.56; // p == 12345 int g = p; // không hợp lệ mặc dù kiểu int, có thể lưu giá trị 12345 char c = „t‟; int j = c; // tự động chuyển đổi short k = c; // không hợp lệ short k = (short) c; // ép kiểu trực tiếp float f = 12.35; // không hợp lệ Department of Information Systems 23 24 Department of Information Systems 25 4 1/20/2014 Chuyển đổi kiểu dữ liệu Nội dung String str1 = “12”; int i = Integer.parseInt(str1); // i =12 String str2 = “45.67”; double d= Double.parseDouble(str2); // d=45.67 Department of Information Systems 1. 2. 3. 4. 5. 6. 7. 8. 26 Định danh Các kiểu dữ liệu Hằng giá trị Ép kiểu dữ liệu Toán tử Cấu trúc điều khiển Mảng Tham số dòng lệnh Department of Information Systems 27 5.1. Toán tử số học 5. Toán tử Toán tử (operators):  Kết hợp các giá trị đơn hoặc các biểu thức con thành những biểu thức mới, phức tạp hơn và có thể trả về giá trị. Java cung cấp nhiều dạng toán tử sau:      Toán tử số học Toán tử bit Toán tử quan hệ Toán tử logic Toán tử gán Department of Information Systems 28 5.2. Toán tử bit Department of Information Systems Department of Information Systems 29 5.2. Phép toán bit (tiếp) 30 Department of Information Systems 31 5 1/20/2014 5.3. Phép toán quan hệ Department of Information Systems 5.4. Phép toán logic Department of Information Systems 32 5.5. Toán tử gán 5.5. Toán tử gán (tiếp) Phép toán gán thu gọn: Cú pháp ten_bien = bieu_thuc;  Lấy giá trị của bieu_thuc gán cho ten_bien  Department of Information Systems 34 5.6. Thứ tự ưu tiên các phép gán               Postfix operators [] . (params) x++ x-Unary operators ++x --x +x -x ~ ! Creation or cast new (type)x Multiplicative * / % Additive + Shift << >> >>> Relational < > <= >= instanceof Equality == != Bitwise AND & Bitwise exclusive OR ^ Bitwise inclusive OR | Logical AND && Logical OR || Conditional (ternary) ?: Assignment = *= /= %= += -= >>= <<= >>>= &= ^= |= Department of Information Systems 35 5.7. Chú thích Cho biết toán tử nào thực hiện trước – được xác định bởi các dấu ngoặc đơn hoặc theo ngầm định như sau:  x = x + y; giống như x += y; Dạng lệnh gán thu gọn này còn áp dụng được với các phép toán khác: +, -, *, /, %, >>, <<, &, |, ^ Ví dụ: int a, b, c; a = 3; b = a + 5; c = a * b; Department of Information Systems 33 Java hỗ trợ ba kiểu chú thích như sau:    36 // Chú thích trên một dòng // Không xuống dòng /* Chú thích một đoạn */ /** Javadoc * chú thích dạng Javadoc */ Department of Information Systems 37 6 1/20/2014 5.8. Câu lệnh Nội dung Các câu lệnh kết thúc bởi dấu; Nhiều lệnh có thể viết trên một dòng Một câu lệnh có thể viết trên nhiều dòng  1. 2. 3. 4. 5. 6. 7. 8. Ví dụ : System.out.println( “This is part of the same line”); a=0; b=1; c=2; Department of Information Systems Department of Information Systems 38 6.1. Cấu trúc rẽ nhánh a. Câu lệnh if – else (tiếp): Ví dụ: Cú pháp if (dieu_kien) {cac_cau_lenh; } else {cac_cau_lenh; } Biểu thức điều kiện nhận giá trị boolean Mệnh đề else là tùy chọn Các dấu ngoặc nhọn là không cần thiết với các câu lệnh đơn, nhưng nên sử dụng để tăng sự rõ ràng. if (x > 10) { if (x != 20) { System.out.println("x is not 20"); } else { System.out.println("x = " + x); } } else { System.out.println("x is less than 11"); } Department of Information Systems 40 6.1. Cấu trúc rẽ nhánh (3) 41 6.1. Cấu trúc rẽ nhánh (4) a. Câu lệnh if – else (tiếp): a. Câu lệnh if – else (tiếp): Ví dụ: Kiểm tra số chẵn lẻ: Dạng rút gọn của câu lệnh if-else: class CheckNumber { public static void main(String args[] { int num =10; if(num %2 == 0) System.out.println (num+ “is an even number”); else System.out.println (num +”is an odd number”); } } Department of Information Systems 39 6.1. Cấu trúc rẽ nhánh (2) a. Câu lệnh if – else: Department of Information Systems Định danh Các kiểu dữ liệu Hằng giá trị Ép kiểu dữ liệu Toán tử Cấu trúc điều khiển Mảng Tham số dòng lệnh 42  ( ? : ) Có thể viết mã ngắn hơn  Đảm bảo mã nguồn vẫn dễ đọc if (x>LIMIT) { warning = “Too Big”; } else { warning = null; } warning = (x>LIMIT) ? “Too Big” : null ; Department of Information Systems 43 7 1/20/2014 6.1. Cấu trúc rẽ nhánh (5) 6.1. Cấu trúc rẽ nhánh (5) b. Câu lệnh switch – case (tiếp): b. Lệnh switch – case: Kiểm tra một biến đơn với nhiều giá trị khác nhau và thực hiện trường hợp tương ứng break: Thoát khỏi lệnh switch-case default kiểm soát các giá trị nằm ngoài các giá trị case: case a case b [tru [false] e] [false] [tru e] case a action(s) break case b action(s) break case z action(s) break switch (day) case 0: case 1: rule = break; case 2: … case 6: rule = break; default: rule = . . . case z [false] [tru e] default action(s) Department of Information Systems Thực hiện một câu lệnh hoặc một khối lệnh khi điều kiện vẫn nhận giá trị true while() thực hiện 0 hoặc nhiều lần action state do...while() thực hiện ít nhất một lần [true] condition [false] 45 Ví dụ: class WhileDemo{ public static void main(String args[]){ int a = 5,fact = 1; while (a >= 1){ fact *=a; a--; } System.out.println(“The Factorial of 5 is “+fact); Department of Information Systems } Department of Information Systems 46 6.2. Cấu trúc lặp (2) Ví dụ: for (start_expr; test_expr; increment_expr){ // code to execute repeatedly } class ForDemo { public static void main(String args[]) { int i=1,sum=0; for (i=1;i<=10;i+=2) sum+=i; System.out.println (“Sum of first five old numbers is “+sum); } } Có thể khai báo biến trong câu lệnh for Thường sử dụng để khai báo một biến đếm Thường khai báo trong biểu thức “start” Phạm vi của biến giới hạn trong vòng lặp for (int index = 0; index < 10; index++) { System.out.println(index); } Department of Information Systems 47 6.2. Cấu trúc lặp (2) b. Vòng lặp for:  “error”;} if (day == 0 || day == 1) { rule = “weekend”; } else if (day > 1 && day <7) { rule = “weekday”; } else { rule = error; } } int x = 2; do { x++; System.out.println(x); } while (x < 2);  “weekday”; 6.2. Cấu trúc lặp (2) a. Vòng lặp while và do while:  “weekend”; Department of Information Systems 44 6.2. Cấu trúc lặp int x = 2; while (x < 2) { x++; System.out.println(x); } { 48 Department of Information Systems 49 8 1/20/2014 6.2. Cấu trúc lặp (2) 6.3. Các lệnh thay đổi cấu trúc điều khiển break So sánh vòng lặp for và while:   Các câu lệnh for và while cung cấp chức năng tương đương nhau  Các cấu trúc lặp thường được sử dụng trong các tình hống khác nhau while được sử dụng cho lặp từ đầu đến cuối  for được sử dụng để lặp với số vòng lặp cố định int sum = 0; for (int index = 1;index <= 10;index++) { sum += index; } int sum = 0; int index = 1; while (index <= 10) { sum += index; index++; } Department of Information Systems continue  Có thể được sử dụng cho vòng lặp for, while hoặc do...while Bỏ qua các câu lệnh còn lại của vòng lặp hiện thời và chuyển sang thực hiện vòng lặp tiếp theo. Department of Information Systems Gắn nhãn: Tiếp tục thực hiện câu lệnh tiếp theo sau vòng lặp được gắn nhãn Không gắn nhãn: Thực hiện câu lệnh tiếp theo bên ngoài vòng lặp Department of Information Systems 50 6.3. Các lệnh thay đổi cấu trúc điều khiển   Có thể được sử dụng để thoát ra ngoài câu lệnh switch Kết thúc vòng lặp for, while hoặc do...while Có hai dạng: 6.3. Các lệnh thay đổi cấu trúc điều khiển public int myMethod(int x) { int sum = 0; outer: for (int i=0; i0) System.out.println(args[0]); if (args.length>1) System.out.println(args[1]); if (args.length>2) System.out.println(args[2]); } // end of main } // end of class Department of Information Systems 11
- Xem thêm -

Tài liệu liên quan