Bài 2 – Hằng, Biến, Kiểu dữ liệu, Toán tử, Biểu thức và Cấu trúc điều khiển trong Java

3217

Mục tiêu của bài học

Sau khi học xong bài học sinh viên có khả năng:
Hiểu được khái niệm Hằng, Biến, Kiểu dữ liệu, Toán tử, Biểu thức và Cấu trúc điều khiển trong Java.
– Vận dụng Hằng, Biến, Kiểu dữ liệu, Toán tử, Biểu thức và Cấu trúc điều khiển giải được các bài toán đơn giản trong thực tế.

Từ khoá (KeyWord)

– Là những từ định nghĩa trước trong Java, có ý nghĩa xác định, phải dùng đúng cú pháp, đều viết bằng chữ thường, không dùng vào việc khác hay đặt tên mới trùng từ khoá
– Từ khoá gồm có từ khoá khai báo, điều khiển, kiểu dữ liệu, toán tử

+ Từ khoá khai báo
: public, private, static, abstract, extends, const, import, package, class, interface, implement, new…
+ Từ khoá điều khiển: switch, case, break, if, return, for, while, continue, try, catch, throws…
+ Từ khoá toán tử: instanceof…
+ Từ khoá kiểu dữ liệu: boolean, char, short, long, double, int, byte, float, null, void…

Tên (Identifier)

– Là một dãy ký tự chỉ tên gói, giao diện, lớp, biến, hàm, hằng, có phân biệt chữ hoa, thường. Tên bắt đầu bằng ký tự hoặc dấu $ _… nhưng không thể bắt đầu bằng một số, không có dấu cách trong tên, và còn có thể dùng bộ ký tự Unicode để đặt tên. Ngoài ra, khi bạn đặt tên nên tránh một số ký hiệu như % @ *… vốn được dùng trong Java với ý nghĩa riêng.
– Khi đặt tên nên theo quy tắc đặt các tên định nghĩa sẵn của Java cho dễ nhớ như sau:

+ Tên gói: viết chữ thường.
+ Tên lớp, giao diện: bắt đầu bằng chữ hoa và viết hoa đầu từ.
+ Tên biến, hàm: bắt đầu bằng chữ thường, các chữ đầu từ viết hoa.
+ Tên hằng: viết chữ hoa.

Hằng (Constant)

– Hằng là một vùng nhớ để lưu trữ dữ liệu hay địa chỉ dữ liệu không thay đổi giá trị trong chương trình. Cú pháp: final TypeConst Name = Value;
Ví dụ:  final int MAX = 10;
– Bình thường hằng nguyên được ghi dưới dạng thập phân (cơ số 10), muốn diễn đạt hằng nguyên ở dạng bát phân (cơ số 8), bạn ghi 0 đầu tiên. Tương tự, muốn diễn đạt hằng nguyên ở dạng thập lục phân (cơ số 16), bạn ghi 0x đầu tiên. Ví dụ : 017     0x1fe
– Java xem hằng nguyên thuộc kiểu int, trừ khi trị nguyên vượt quá phạm vi kiểu int, khi đó hằng nguyên thuộc kiểu long. Muốn có hằng nguyên nhỏ thuộc kiểu long, bạn thêm l hay L vào cuối trị số. Hằng nguyên có thể được gán cho biến thuộc kiểu byte hay short miễn là trị nguyên được gán không vượt quá phạm vi của các kiểu này. Ví dụ:  25L

– Hằng số thực được Java mặc nhiên hiểu là trị thuộc kiểu double, bạn có thể ghi thêm D hay F (d hay f) ở cuối trị số để khẳng định rõ trị số thuộc kiểu double hay float. Hằng số thực có thể chứa ký tự E hay e. Ví dụ :  6.5  6.5F  12.36E-2
– Hằng ký tự được ghi trong cặp dấu nháy đơn. Ví dụ : ‘a’ ‘5’.
– Hằng chuỗi diễn đạt một chuỗi ký tự kiểu String, được ghi trong cặp dấu nháy kép. Ví dụ: “Em còn nhớ hay em đã quên\n”.

Một số hằng ký tự

Bài tập vận dụng: Bạn hãy chọn khai báo hằng ĐÚNG?

1. double Y = 20
2. double Y = 2.0
3. double Y = 20D
4. double Y = 20F
5. double Y = 20L
6. int Y =20
7. int Y =2.0
8. int Y =20D
9. int Y =20F
10. int Y =20L
11. int X =10
12. long X = 100L
13. double X = 100.00F
14. double x = 100.00
15. double x = 100.00F

Biến (Variable)

– Là một vùng nhớ được định danh để lưu trữ dữ liệu hay địa chỉ dữ liệu. Mọi biến cần được định nghĩa tức là khai báo tên và kiểu dữ liệu trước khi sử dụng.
– Định nghĩa biến thuộc kiểu dữ liệu cơ bản:  TypeVarName;
hay có thể khởi tạo giá trị đầu cho biến:         TypeVarName = Value;
– Nhiều biến cùng kiểu có thể khai báo cách nhau dấu phẩy, bạn có thể định nghĩa biến kiểu tham chiếu. Ví dụ: String s =“Hello”;   int x = 5, y = 7;
– Cách khai báo
<kiểu_dữ_liệu> <tên_biến>;
<kiểu_dữ_liệu> <tên_biến> = <giá_trị>;
– Gán giá trị cho biến:  <tên_biến> = <giá_trị>;
– Biến công cộng (toàn cục): là biến có thể truy xuất ở khắp nơi trong chương trình, thường được khai báo dùng từ khóa public, hoặc đặt chúng trong một class.
– Biến cục bộ: là biến chỉ có thể truy xuất trong khối lệnh nó khai báo.

Kiểu dữ liệu nguyên thuỷ (Primitive types)

Bài tập vận dụng: Viết chương trình nhập các thông tin của 1 sinh viên gồm họ tên, điểm trung bình từ bàn phím. Xuất các thông tin ra màn hình.
Gợi ý:
1- Chạy NetBean
2- Tạo một project dự án
3- Tạo lớp chứa phương thức main như sau
    public class Infosinhvien{
public static void main(String[] args){ … }
4- Viết mã cho main(): Sử dụng Scanner để đọc dữ liệu từ bàn phím
Scanner sv = new Scanner(System.in);
System.out.print(“Họ và tên: “);
String hoTen = sv.nextLine();
System.out.print(“Điểm TB: “);
double diemTB = sv.nextDouble();
5- Sử dụng System.out.println() để xuất ra màn hình
System.out.println(“Ho Ten SV: “+hoTen);
System.out.println(“Diem TB: “+diemTB);
6- Chạy ứng dụng

Ép kiểu dữ liệu

Khi gặp phải sự không tương thích kiểu dữ liệu chúng ta phải tiến hành chuyển đổi kiểu dữ liệu cho biến hoặc biểu thức.
Ví dụ: int x = 10; double y =20.0;
y = x; // ép kiểu tự động.
x = (int)y; // ép kiểu tường minh phần thập phân sẽ bị bỏ.

Bài tập vận dụng: Chọn câu khai báo ĐÚNG

Scanner x = new Scanner(System.in)
1- int y = x.nextLine();
2- long y = x.nextInt();
3- long y = (int)x.nextDouble();
4- long y = (int)x.nextDouble();
5- float y = (int)x.nextDouble();

Biểu thức (Expression)

– Là một công thức tính toán một giá trị theo quy tắc toán học, cấu tạo từ các toán hạng (Operand): hằng, hàm, biến và nối kết với nhau bởi các toán tử (Operator).
– Các toán hạng trong mọi biểu thức phải tương thích với nhau về kiểu.
– Một biểu thức có thể là biểu thức số học, logic, ký tự, chuỗi khi kết quả của biểu thức có kiểu tương ứng.
– Kết quả biểu thức cho ta một giá trị xác định.

Bài tập vận dụng: Xác định giá trị của 2 biểu thức bên dưới

Biểu thức 1:  12 – 5 * 2
12, 5 và 7 là toán hạng
và * là toán tử
Kết quả của biểu thức là ???
Biểu thức 2: 12 > 5 && 2 == 1
12, 5, 2 và 1 là toán hạng
>, && và == là toán tử
Kết quả của biểu thức là ???

Toán tử (Operator)

Toán tử số học

Toán tử quan hệ và logic

Toán tử gán (assignment)

Thứ tự ưu tiên từ trái qua phải và từ trên xuống dưới như sau

Toán tử điều kiện

<điều kiện> ? <biểu thức 1> : < biểu thức 2>
Nếu biểu thức <điều kiện> có gí trị là true thì kết quả của biểu thức là <biểu thức 1>, ngược lại là <biểu thức 2>.
Ví dụ:
int x = 10, y = 20;
int z = (x<y) ? 30 : 40;

Chuyển chuỗi sang kiểu dữ liệu nguyên thuỷ

byte Byte.parseByte(String)
short Short.parseShort(String)
int Integer.parseInt(String)
long Long.parseLong(String)
float Float.parseFloat(String)
double Double.parseDouble(String)
boolean Boolean.parseBoolean(String)

Lệnh đơn

– Lệnh đơn là thành phần cơ bản nhất trong chương trình Java, diễn đạt một thao tác riêng lẻ nào đó phải làm, kết thúc bằng dấu chấm phẩy.
– Lệnh đơn có thể là lời gọi hàm, phép gán, phép tăng, giảm giá trị biến, các lệnh định nghĩa, khai báo.
Ví dụ:  int i =1;
System.out.println(“Đây là một hằng chuỗi”);
x++;

Khối lệnh

– Nhiều câu lệnh đơn có thể nhóm lại thành một câu lệnh phức hợp gọi là khối lệnh.
– Khối lệnh được mở đầu bằng dấu { và kết thúc bằng dấu }, có thể đặt trong một khối lệnh khác.

Cấu trúc if

if là câu lệnh lựa chọn cho phép chương trình rẻ nhánh thực hiện lệnh theo hai hướng khác nhau căn cứ trên giá trị true, false của biểu thức điều kiện kiểu logic.
– Cú pháp:
Dạng 1:  if (Boolean-Expression)
Statement;
Dạng 2:  if (Boolean-Expression;
Statement1;
else Statement2;
Boolean-Expression là biểu thức điều kiện có kiểu logic.
Statement1, Statement2 có thể là lệnh đơn, khối lệnh, hay cấu trúc điều khiển.

Dạng 1

Dạng 2

Cấu trúc if dạng if else if

if (<Boolean-Expression 1>){
<Statement 1>
}
else if (<Boolean-Expression 2>){
<Statement 2>
}
….
else{
<Statement N + 1>
}

Bài tập vận dụng:

Bài 1: Nhập từ bàn phím số n, nếu số dương thì xuất ra màn hình dòng chữ “La so duong”.
Bài 2: Nhập từ bàn phím số n, nếu số dương thì xuất ra màn hình dòng chữ “La so duong”, ngược lại “La so am”.
Bài 3: Cho một số nguyên a, kiểm tra nếu a > 0 thì xuất ra “La so duong” và tiếp tục kiểm tra nếu a lớn 10 thì xuất ra “Lon hon 10”
Bài 4: Cho số nguyên a và b, Xuất ra “Deu la duong” nếu a và b đều lớn hơn 0, “Nguoc nhau” nếu a dương b âm hoặc a âm b dương. “Be hon hoac bang 0” nếu a và b đều nhỏ hơn 0.
Bài tập 5: Viết chương trình giải phương trình bậc 2: ax + bx + c = 0.

Gợi ý:

Gợi ý bài 1, 2

public class Main {
      public static void main(String[] args) {
       int n = 10;
       if (n > 0) {
          System.out.println("La so duong");
       }
   }
}

Gợi ý bài 3

public class Main {
   public static void main(String[] args) {
       int a = 11;
       if (a > 0) {
           System.out.println("La so duong");
           if (a > 10) {
           System.out.println("Lon hon 10");
          }
       }
   }
}

Gợi ý bài 4

public class Main {
   public static void main(String[] args) {
       int a = 11, b = -1;
      if (a > 0 && b > 0) {
           System.out.println("Deu la duong");
       } else if (a < 0 && b > 0) {
           System.out.println("Nguoc nhau");
       } else if (a > 0 && b < 0) {
           System.out.println("Nguoc nhau");
       }
       else {
            System.out.println("Be hon hoac bang 0");
       }
   }
}

Gợi ý bài 5

System.out.print("Nhap a: ");
double a = scanner.nextDouble();
System.out.print("Nhap b: ");
double b = scanner.nextDouble();
System.out.print("Nhap c: ");
double c = scanner.nextDouble();
double result = b * b - 4.0 * a * c;
if (result > 0.0) {
   double r1 = (-b + Math.pow(result, 0.5)) / (2.0 * a);
   double r2 = (-b - Math.pow(result, 0.5)) / (2.0 * a);
   System.out.println("Phuong trinh co 2 nghiem " + r1 + " and " + r2);
} else if (result == 0.0) {
  double r1 = -b / (2.0 * a);
  System.out.println("Phuong trinh co 1 nghiem " + r1);
} else {
  System.out.println("Phuong trinh vo nghiem");
}

Cấu trúc switch

– switch là câu lệnh lựa chọn, cho phép rẻ nhánh thực hiện lệnh theo nhiều hướng khác nhau căn cứ trên giá trị của một biểu thức.
– Cú pháp: 
switch (Expression) {
case Expression 1:
      Statement 1; break;
      . . .            
case Expression n: break;
       Statement n; break;
default:
       Statement n +1;
 }
Expression: Biểu thức điều kiện có kiểu byte, short, int, char.
Statement1,… Statementn+1 có thể là một hoặc nhiều lệnh đơn, hay cấu trúc điều khiển.
Expression1, … Expressionn: các biểu thức hằng (toán hạng là các giá trị hay hằng).

Ví dụ:

public class Main {
    public static void main(String[] args) {
       int a = 2;
       switch (a ) {
           case 1:
               System.out.println("Value is 1");                break;
           case 2:
               System.out.println("Value is 2");                break;
           case 3:
               System.out.println("Value is 3");                break;
           default:
               System.out.println("Value is default");
       }
   }
}

Cấu trúc for

– Cú pháp:
for (Initialization-Expressions; Boolean-Expression; Increment-Expressions)                                         Statement;
Statement có thể là lệnh đơn, khối lệnh, hay cấu trúc điều khiển.
Initialization-Expressions: phần khởi tạo thường là các biểu thức khởi tạo giá trị cho các biến điều khiển vòng lặp, cách nhau dấu phẩy.
Boolean-Expression: là biểu thức điều kiện có kiểu logic, thường là biểu thức so sánh giá trị của biến điều khiển với giá trị kết thúc vòng lặp.
Increment-Expressions: phần tăng thường là các biểu thức tăng giảm giá trị biến điều khiển vòng lặp, cách nhau dấu phẩy.

Ví dụ:

public class Main {
    public static void main(String[] args) {
       for(int i = 0; i >=0; i++) {
           System.out.println("value is " + i);
       }
   }
}

Cấu trúc while

– Cú pháp:
  while (Boolean-Expression)
               Statement;
Statement: có thể là lệnh đơn, khối lệnh, hay cấu trúc điều khiển.
Boolean-Expression: là biểu thức điều kiện có kiểu logic.

Ví dụ:

public class USCLN {
public static void main(String[] args) {
     int x = 12, y = 6;
     System.out.print("USCLN cua "+x+" va "+y+" la: ");    
     while ( x!=y)
     if (x>y) x = x – y else y = y - x;
     System.out.println(x); 
  }
}

Cấu trúc dowhile

Cú pháp:
do
      Statement;
while (Boolean-Expression);
Statement: có thể là lệnh đơn, khối lệnh, hay cấu trúc điều khiển.
Boolean-Expression: là biểu thức điều kiện có kiểu logic.


Ví dụ: 

public class NguyenTo {
public static void main(String[] args) {
		int n = 7;
		double k = Math.sqrt(n);
		int i = 1;
		do 
			i++;
		while (i <=k && n % i != 0);
		if (i > k) System.out.println(n+" la so nguyen to");	
                else System.out.println(n+" khong la so nguyen to";
                }
          }

Lệnh break & continue

break dùng để ngắt lệnh lặp.
Continue dùng để thực hiện lần lặp tiếp theo ngay tức khắc.
Ví dụ:

public class Main {
public static void main(String[] args) {
	        for(int i = 1; i <= 10; i++) {
          		  if(i == 3) {
                		break;
                   }
                   System.out.println(i);
                   }
            }
            }
public class Main {
    	  public static void main(String[] args) {
        		for(int i = 1; i <= 10; i++) {
            		if (i == 8) {
                	continue;
            	}
            	System.out.println(i);
        	}
    	}
}

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây