02 Ngon ngu Java
LẬP TRÌNH JAVA
Bài 2: Cú pháp cơ bản của ngôn ngữ Java
Mục tiêu
Kết thúc bài học bạn có thể:
Biết cách định nghĩa 1 tên trong java
Biết các từ khóa của java.
Hiểu các kiểu dữ liệu cơ bản của java.
Nhận biết được cú pháp java gần hoàn toàn giống C.
Giải thích được cơ chế điều khiển chương trình
Biết các đặc tính về mảng với java
Sử dụng được các hàm toán trong gói java.lang
Sử dụng được các hàm nhập xuất dữ liệu cơ bản.
Nội dung
2.1- Chú thích trong java
2.2- Từ khóa của java- Cách đặt tên
2.3- Kiểu cơ bản trong java
2.4- Biến: Gán trị và khởi tạo.
2.5- Toán tử- Operators
2.6- Gói java.lang
2.7- Cấu trúc điều khiển - Phát biểu
2.8- Mảng - Array
2.9- Nhập xuất dữ liệu.
2.10- Tóm tắt dạng trắc nghiệm
2.11- Bài tập
2.1- Chú thích trong java
// Chú thích đến cuối dòng
/* Chú thích nhiều dòng
......
*/
Cách viết chú thích giống C++
Chú thích là công cụ:
Giải thích chương trình.
Lập tài liệu cho chương trình: Tác gỉa, version, những đặc điểm của chương trình
2.2- Từ khóa- Cách đặt tên
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
2.2- Từ khóa- Cách đặt tên
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
Cách đặt tên (identifier):
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
Một tên không thể là true, false, hoặc null.
Một tên không thể là một từ khóa.
Một tên có thể có độ dài bất kỳ.
Từ khóa và tên có tính chất case-sensitive
Nhận xét: Gần như y hệt C++
2.3- Kiểu dữ liệu cơ bản trong java
2.3- Kiểu dữ liệu cơ bản trong java
Thí dụ
Dùng các ký tự đặc tả việc buộc phải xem xét trị thuộc 1 kiểu nào đó: i, I, l, L, f, F, d, D
nhưng L thường dùng thay cho l vì sợ nhầm với 1.
178 int (default) 45.62 double (default)
178L long 44.21f float
11.19e8 double (default)
'z' char , hằng klý tự để trong cặp nhát đơn (single quote character)
Nhận xét: Gần như C++
2.4- Biến- Định nghĩa, khởi tạo
Biến = Trị có thay đổi theo thời gian
3 đặc điểm của biến:
Tên biến, Trị khởi tạo, tầm vực (scope)
Scope của biến: khối chương trình mà biến có ý nghĩa (tham khảo được)
Cú pháp định nghĩa biến:
DataType [[identifier [ = InitValue]],...] ;
DataType variableName;
int count , age1= 21, age2= 2*age1;
char ch1='z', ch2;
Giống C
2.4- Biến- Định nghĩa, khởi tạo
Ví dụ:
int x; // Khai báo x là một
// biến nguyên (integer);
double bankinh
char a;
// Tinh dien tich thu nhat
bankinh = 1.0;
dientich = bankinh*bankinh*3.14159;
System.out.println("Dien tich bang " + dientich + " voi ban kinh la " + bankinh);
2.4- Biến- Định nghĩa, khởi tạo
Lệnh gán và biểu thức gán
Dạng thức: variable = expression;
Ví dụ:
x = 1; // Gán 1 cho x;
bankinh = 1.0; // Gán 1.0 cho bankinh;
a = 'A'; // Gán 'A' cho a;
x = x + 1;
dttg = Math.sqrt(p*(p-a)*(p-b)*(p-c)) ;
2.4- Biến- Định nghĩa, khởi tạo
Hằng - Constants
Dạng thức:
final datatype CONSTANTNAME = VALUE;
Ví dụ:
final double PI = 3.14159;
final int SIZE = 3;
2.5- Toán tử- Operators
Ký hiệu mô tả phép toán
Arithmetic ops: +, -, *, /, %, ++, --
Relational ops : <, <=, ==. >=, >, !=
Logical ops: && ||
Bitwise ops: ~, &, |, ^ (xor), >>, <<, &=, |=,
^=, >>=, <<=
Assignment ops : = , +=, -=, *=, /=, %=
Ternary op:
Condition ? TrueExp : FalseExp
Giống C
2.5- Toán tử- Operators
+ - * / %
int i1 = 5/2 ; kết quả là số nguyên i1 = 2
float i2 = 5.0/2 ; kết quả là số thực i2 = 2.5
byte i3 = 5 % 2; i3 = 1 (số dư của phép chia)
2.5- Toán tử- Operators
CHÚ Ý
Các phép tính với số dấu chấm động được lấy xấp xỉ vì chúng được lưu trữ không hoàn toàn chính xác. Ví dụ:
System.out.println(1 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);
hiển thị 0.5000000000000001, không phải 0.5
System.out.println(1.0 - 0.9);
hiển thị 0.09999999999999998, không phải 0.1.
Các số nguyên được lưu trữ chính xác nên các phép tính với chúng cho kết quả chính xác.
2.5- Toán tử- Operators
Biểu thức toán học
Được chuyển thành công thức Java như sau:
(3+4*x)/5 - 10*(y-5)*(a+b+c)/x + 9*(4/x + (9+x)/y)
2.5- Toán tử- Operators
Các toán tử gán tắt
2.5- Toán tử- Operators
Các toán tử tăng và giảm
2.5- Toán tử- Operators
Các toán tử tăng và giảm
2.5- Toán tử- Operators
Các toán tử tăng và giảm
Sử dụng các toán tử tăng và giảm giúp các biểu thức ngắn gọn hơn, nhưng cũng làm cho chúng phức tạp và khó đọc hơn.
Nên tránh sử dụng các toán tử này trong những biểu thức làm thay đổi nhiều biến hoặc sử dụng cùng một biến nhiều lần như sau: int k = ++i + i.
2.5- Toán tử- Operators
Biểu thức gán và Câu lệnh gán
Trước Java 2, tất cả các biểu thức có thể được sử dụng như câu lệnh. Kể từ Java 2, chỉ những loại biểu thức sau có thể là câu lệnh:
variable op= expression; // Với op là +, -, *, /, %
++variable;
variable++;
--variable;
variable--;
2.5- Toán tử- Operators
instanceof : toán tử kiểm tra 1 đối tượng có thuộc 1 lớp ? true | false
Ví dụ:
class InstanceOfDemo
{ public static void main (String args[])
{ InstanceOfDemo t = new InstanceofDemo();
if ( t instanceof InstanceOfDemo)
System.out.println(" t la 1 doi tuong thuoc lop nay");
else
System.out.println(" t KHONG la 1 doi tuong thuoc lop nay");
}
}
2.5- Toán tử- Operators
Chuyển đổi dữ liệu kiểu số (Ép kiểu)
Khi thực hiện một phép tính nhị phân chứa 2 toán hạng khác kiểu, Java tự động chuyển kiểu toán hạng theo luật sau:
Nếu một toán hạng kiểu double, toán hạng khác được chuyển đổi thành kiểu double.
Nếu không thì, nếu một toán hạng kiểu float, toán hạng khác được chuyển đổi thành kiểu float.
Nếu không thì, nếu một toán hạng kiểu long, toán hạng khác được chuyển đổi thành kiểu long.
Nếu không thì, cả hai toán hạng được chuyển đổi thành kiểu int.
2.5- Toán tử- Operators
Mức ưu tiên Ép kiểu
double
float
long
int
short
byte
2.5- Toán tử- Operators
Ép kiểu mở rộng và thu hẹp
Ép kiểu mở rộng
double d = 3; (mở rộng kiểu)
Ép kiểu thu hẹp
int i = (int)3.0; (thu hẹp kiểu)
2.5- Toán tử- Operators
Các ký tự đặc biệt
2.5- Toán tử- Operators
Ép kiểu giữa kiểu ký tự và kiểu số
int i = 'a'; // tương tự int i = (int)'a';
char c = 97; // tương tự char c = (char)97;
2.5- Toán tử- Operators
Kiểu boolean và các toán tử
boolean a1 = true;
boolean a2 = false;
boolean b = (1 > 2);
boolean b2 = (1 == 2);
Kết quả của phép so sánh là một giá trị logic Boolean: true hoặc false
2.5- Toán tử- Operators
Các toán tử so sánh
2.5- Toán tử- Operators
Các toán tử Boolean
2.5- Toán tử- Operators
Bảng chân lý của toán tử !
2.5- Toán tử- Operators
Bảng chân lý của toán tử !
2.5- Toán tử- Operators
Bảng chân lý của toán tử !
2.5- Toán tử- Operators
Bảng chân lý của toán tử !
2.5- Toán tử- Operators
Xác định năm nhuận?
Một năm là năm nhuận nếu nó chia hết cho 4, nhưng không chia hết cho 100 hoặc nó chia hết cho 400.
Source code xác định năm nhuận như sau:
boolean NamNhuan = ((nam % 4 == 0) && (nam % 100 != 0)) || (nam % 400 == 0);
2.5- Toán tử- Operators
Thứ tự ưu tiên các toán hạng
Biểu thức sau được tính như thế nào?
3 + 4 * 4 > 5 * (4 + 3) - ++i
Tất nhiên phải ưu tiên trong ngoặc trước, ngoài ngoặc sau
Chỉ dùng ngoặc tròn
Nhiều tầng ngoặc thì thứ tự ưu tiên ngoặc từ trong ra ngoài
2.5- Toán tử- Operators
Thứ tự ưu tiên các toán hạng
2.5- Toán tử- Operators
Sự kết hợp toán tử
Khi tính toán với 2 toán hạng có cùng mức ưu tiên, sự kết hợp toán tử sẽ xác định thứ tự các phép tính. Tất cả các toán tử nhị phân, ngoại trừ toán tử gán, là kết hợp trái (left-associative).
a - b + c - d là tương đương với ((a - b) + c) - d
Các toán tử gán là kết hợp phải. Do đó biểu thức
a = b += c = 5 tương đương với a = (b += (c = 5))
2.5- Toán tử- Operators
Luật tính biểu thức
Luật 1: Tính bất kỳ biểu thức con nào có thể tính được từ trái sang phải.
Luật 2: Các toán hạng được áp dụng theo thứ tự ưu tiên của chúng.
Luật 3: Luật kết hợp áp dụng cho 2 toán hạng cạnh nhau có cùng mức ưu tiên.
2.5- Toán tử- Operators
Luật tính biểu thức
Khi các toán hạng có hiệu ứng lề (side effects), thứ tự tính toán của các toán hạng rất cần quan tâm.
Ví dụ, x sẽ bằng 1 trong đoạn lệnh sau, vì a được tính bằng 0 trước khi ++a tăng nó lên thành 1.
int a = 0;
int x = a + (++a); // 0 + 1
Nhưng x sẽ bằng 2 trong đoạn lệnh sau, vì ++a tăng nó lên thành 1, rồi cộng với chính nó.
int a = 0;
int x = ++a + a; // 1 + 1
Kiểu char chỉ biểu diễn 1 ký tự. Để biểu diễn một chuỗi ký tự, sử dụng kiểu dữ liệu String. Ví dụ:
String message = "Welcome to Java";
String là một lớp được định nghĩa trước trong thư viện Java giống như System class và JOptionPane class.
Kiểu String không phải là kiểu cơ sở mà là một kiểu tham chiếu (reference type). Bất kỳ lớp Java nào cũng có thể được sử dụng như một kiểu tham chiếu thay cho một biến.
Hiện tại, bạn chỉ cần hiểu cách khai báo một biến String, cách gán một chuỗi ký tự cho một biến, và cách ghép các chuỗi.
Ghép 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
Chuyển ký tự thành số nguyên:
Dữ liệu trả về từ input dialog box là một chuỗi ký tự. Nếu bạn nhập vào một giá trị số 123, nó trả về chuỗi "123". Để nhận được dữ liệu là một số, bạn phải chuyển đổi.
Để chuyển đổi một chuỗi ký tự thành một giá trị int, bạn có thể sử dụng phương thức tĩnh parseInt trong lớp Integer như sau:
int intValue = Integer.parseInt(intString);
trong đó intString là một chuỗi số nguyên như "123".
Chuyển đổi ký tự thành số thực:
Để chuyển đổi một chuỗi ký tự thành một giá trị double, bạn có thể sử dụng phương thức tĩnh parseDouble trong lớp Double như sau:
double doubleValue = Double.parseDouble(doubleString);
trong đó doubleString là một chuỗi số thực như "123.45".
2.7 Nhập dữ liệu từ Command Prompt
Sử dụng MyInput.java
hoặc sử dụng lớp Scanner (JDK 1.5)
import java.util.*;
public class readint{
static Scanner s=new Scanner(System.in);
public static void main(String[] abc){
System.out.print("Doc vao mot so nguyen: ");
int a=readInt();
System.out.println("So nguyen la: " + a);
}
public static int readInt(){
return s.nextInt();
}
}
2.8 Programming Style
Chú thích
Quy ước đặt tên
Thụt đầu dòng và khoảng cách dòng
Khối
Chú thích
Đặt một chú thích đầu chương trình để giải thích chương trình làm việc gì, các đặc điểm của CT, các cấu trúc dữ liệu mà CT hỗ trợ và các kỹ thuật đặc biệt mà CT sử dụng.
Đặt trong chú thích tên và mô tả rõ ràng về bạn ở đầu chương trình.
Đặt chú thích thích hợp giải thích các lớp, các đoạn lệnh...
Quy ước đặt tên
Chọn các tên mô tả và có ý nghĩa.
Tên biến và phương thức:
S ử d ụng ch ữ thư ờng. N ếu tên có ch ứa m ột vài t ừ, hãy vi ết li ền nhau, s ử d ụng ch ữ thư ờng ở t ừ th ứ nh ất và vi ết hoa ký t ự đ ầu tiên c ủa các t ừ ti ếp theo.
Ví d ụ, các bi ến radius và area, phương th ức computeArea.
Quy ước đặt tên
Tên lớp:
Viết hoa ký tự đầu tiên của mỗi từ trong tên. Ví dụ ComputeArea.
Tên h ằng:
Vi ết hoa t ất c ả các ký t ự. Ví d ụ h ằng PI.
Thụt đầu dòng và khoảng cách dòng
Thụt đầu dòng
Thụt vào 2 khoảng trống.
Cả 2 phía của mỗi toán tử nên có 1 khoảng trống
boolean b = 3 + 4 * 4 > 5 * (4 + 3) - ++i;
Kho ảng cách dòng
S ử d ụng dòng tr ống đ ể ngăn cách các đo ạn code.
Block Styles
Sử dụng end-of-line style cho các dấu ngoặc nhọn.
2.9- Nhập xuất dữ liệu
2.9- Nhập xuất dữ liệu
2.9- Nhập xuất dữ liệu
Minh họa xuất nhập
2.11- Bài tập
Bạn đang đọc truyện trên: AzTruyen.Top