Mục lục
KIỂU DỮ LIỆU TRONG JAVA
Kiểu dữ liệu nguyên thuỷ
Kiểu dữ liệu | Mô tả |
---|---|
byte | Dùng để lưu dữ liệu kiểu số nguyên có kích thước một byte (8 bít). Phạm vi biểu diễn giá trị từ -128 đến 127. Giá trị mặc định là 0. |
char | Dùng để lưu dữ liệu kiểu kí tự hoặc số nguyên không âm có kích thước 2 byte (16 bít). Phạm vi biểu diễn giá trị từ 0 đến u\ffff. Giá trị mặc định là 0. |
boolean | Dùng để lưu dữ liệu chỉ có hai trạng thái đúng hoặc sai (độ lớn chỉ có 1 bít). Phạm vi biểu diễn giá trị là {“True”, “False”}. Giá trị mặc định là False. |
short | Dùng để lưu dữ liệu có kiểu số nguyên, kích cỡ 2 byte (16 bít). Phạm vi biểu diễn giá trị từ – 32768 đến 32767. Giá trị mặc định là 0. |
int | Dùng để lưu dữ liệu có kiểu số nguyên, kích cỡ 4 byte (32 bít). Phạm vi biểu diễn giá trị từ -2,147,483,648 đến 2,147,483,647. Giá trị mặc định là 0. |
long | Dùng để lưu dữ liệu có kiểu số nguyên có kích thước lên đến 8 byte. Giá trị mặc định là 0L. |
float | Dùng để lưu dữ liệu có kiểu số thực, kích cỡ 4 byte (32 bít). Giá trị mặc định là 0.0F. |
double | Dùng để lưu dữ liệu có kiểu số thực có kích thước lên đến 8 byte. Giá trị mặc định là 0.00D |
Kiểu dữ liệu đối tượng
Kiểu dữ liệu | Mô tả |
---|---|
Array | Một mảng của các dữ liệu cùng kiểu. |
class | Dữ liệu kiểu lớp đối tượng do người dùng định nghĩa. Chứa tập các thuộc tính và phương thức.. |
interface | Dữ liệu kiểu lớp giao tiếp do người dùng định nghĩa. Chứa các phương thức của giao tiếp. |
ÉP KIỂU
Ép kiểu trong java là việc gán giá trị của một biến có kiểu dữ liệu này tới biến khác có kiểu dữ liệu khác. Và có 02 dạng ép kiểu.
float c = 30.8f; int b = (int)c + 2;
Trong ví dụ trên, đầu tiên giá trị dấu phảy động c được đổi thành giá trị nguyên 30. Sau đó nó được cộng với 1 và kết quả là giá trị 31 được lưu vào b.
Nới rộng (widening)
Là quá trình làm tròn số từ kiểu dữ liệu có kích thước nhỏ hơn sang kiểu có kích thước lớn hơn. Kiểu biến đổi này không làm mất thông tin. Ví dụ chuyển từ int sang float. Chuyển kiểu loại này có thế được thực hiện ngầm định bởi trình biên dịch.
byte >> short >> int >> long >> float >> double
Ví dụ: Minh hoạ về widening
public class TestWidening { public static void main(String[] args) { int i = 100; long l = i; // không yêu cầu chỉ định ép kiểu float f = l; // không yêu cầu chỉ định ép kiểu System.out.println("Giá trị Int: " + i); System.out.println("Giá trị Long: " + l); System.out.println("Giá trị Float: " + f); } }
Kết quả:
Giá trị Int: 100 Giá trị Long: 100 Giá trị Float: 100.0
Thu hẹp (narrowing)
Là quá trình làm tròn số từ kiểu dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn. Kiểu biến đổi này có thể làm mất thông tin như ví dụ ở trên. Chuyển kiểu loại này không thể thực hiện ngầm định bởi trình biên dịch, người dùng phải thực hiện chuyển kiểu tường minh.
double >> float >> long >> int >> short >> byte
Ví dụ: Minh hoạ về narrowing
public class TestNarrowwing { public static void main(String[] args) { double d = 100.04; long l = (long) d; // yêu cầu chỉ định kiểu dữ liệu (long) int i = (int) l; // yêu cầu chỉ định kiểu dữ liệu (int) System.out.println("Giá trị Double: " + d); System.out.println("Giá trị Long: " + l); System.out.println("Giá trị Int: " + i); } }
Kết quả:
Giá trị Double: 100.04 Giá trị Long: 100 Giá trị Int: 100
CÁC TOÁN TỬ
Toán tử trong java là một ký hiệu được sử dụng để thực hiện một phép tính/chức năng nào đó. Java cung cấp các dạng toán tử sau:
Toán tử số học
Các toán hạng của các toán tử số học phải ở dạng số. Các toán hạng kiểu boolean không sử dụng được, các toán hạng ký tự cho phép sử dụng loại toán tử này. Một vài kiểu toán tử được liệt kê trong bảng dưới đây.
Giả sử, chúng ta có biến số nguyên a = 10 và b = 20.
Toán tử | Mô tả | Ví dụ |
---|---|---|
+ | Cộng Trả về giá trị là tổng của hai toán hạng | a + b sẽ là 30 |
– | Trừ Trả về kết quả là hiệu của hai toán hạng. | a + b sẽ là -1 |
* | Nhân Trả về giá trị là tích của hai toán hạng. | a + b sẽ là 200 |
/ | Chia Trả về giá trị là thương của phép chia. | b / a sẽ là 2 |
% | Phép lấy modul Giá trị trả về là phần dư của phép chia | b % a sẽ là 0 |
++ | Tăng dần Tăng giá trị của biến lên 1. Ví dụ a++ tương đương với a = a + 1 | a++ sẽ là 11 |
— | Giảm dần Giảm giá trị của biến 1 đơn vị. Ví dụ a– tương đương với a = a – 1 | a– sẽ là 9 |
+= | Cộng và gán giá trị Cộng các giá trị của toán hạng bên trái vào toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái. Ví dụ c += a tương đương c = c + a | a += 2 sẽ là 12 |
-= | rừ và gán giá trị Trừ các giá trị của toán hạng bên trái vào toán toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái. Ví dụ c -= a tương đương với c = c – a | a -= 2 sẽ là 8 |
*= | Nhân và gán Nhân các giá trị của toán hạng bên trái với toán toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái. Ví dụ c *= a tương đương với c = c*a | a *= 2 sẽ là 20 |
/= | Chia và gán Chia giá trị của toán hạng bên trái cho toán toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái. Ví dụ c /= a tương đương với c = c/a | a /= 2 sẽ là 5 |
%= | Lấy số dư và gán Chia giá trị của toán hạng bên trái cho toán toán hạng bên phải và gán giá trị số dư vào toán hạng bên trái. Ví dụ c %= a tương đương với c = c%a | a /= 8 sẽ là 2 |
Toán tử Bit
Các toán tử dạng bit cho phép chúng ta thao tác trên từng bit riêng biệt trong các kiểu dữ liệu nguyên thuỷ.
Toán tử | Mô tả |
---|---|
~ | Phủ định NOT Trả về giá trị phủ định của một bít. |
& | Toán tử AND Trả về giá trị là 1 nếu các toán hạng là 1 và 0 trong các trường hợp khác |
| | Toán tử OR Trả về giá trị là 1 nếu một trong các toán hạng là 1 và 0 trong các trường hợp khác. |
^ | Toán tử Exclusive OR Trả về giá trị là 1 nếu chỉ một trong các toán hạng là 1 và trả về 0 trong các trường hợp khác. |
>> | Dịch phải Chuyển toàn bộ các bít cuả một số sang phải một vị trí, giữ nguyên dấu của số âm. Toán hạng bên trái là số bị dịch còn số bên phải chỉ số vị trí mà các bít cần dịch. |
<< | Dịch trái Chuyển toàn bộ các bít cuả một số sang trái một vị trí, giữ nguyên dấu cuả số âm. Toán hạng bên trái là số bị dịch còn số bên phải chỉ số vị trí mà các bít cần dịch. |
Toán tử quan hệ
Các toán tử quan hệ được sử dụng kiểm tra mối quan hệ giữa hai toán hạng. Kết quả của một biểu thức có dùng các toán tử quan hệ là những giá trị Boolean (logic “true” hoặc “false”). Các toán tử quan hệ được sử dụng trong các cấu trúc điều khiển.
Toán tử | Mô tả |
---|---|
== | So sánh bằng Toán tử này kiểm tra sự tương đương của hai toán hạng |
!= | So sánh khác Toán tử này kiểm tra sự khác nhau của hai toán hạng |
> | Lớn hơn Kiểm tra giá trị của toán hạng bên phải lớn hơn toán hạng bên trái hay không |
< | Nhỏ hơn Kiểm tra giá trị của toán hạng bên phải có nhỏ hơn toán hạng bên trái hay không |
>= | Lớn hơn hoặc bằng Kiểm tra giá trị của toán hạng bên phải có lớn hơn hoặc bằng toán hạng bên trái hay không |
<= | Nhỏ hơn hoặc bằng Kiểm tra giá trị của toán hạng bên phải có nhỏ hơn hoặc bằng toán hạng bên trái hay không |
Toán tử logic
Các toán tử logic làm việc với các toán hạng Boolean. Các toán tử quan hệ được sử dụng trong các cấu trúc điều khiển.
Toán tử | Mô tả |
---|---|
&& | Toán tử và (AND) Trả về một giá trị “Đúng” (True) nếu chỉ khi cả hai toán tử có giá trị “True” |
|| | Toán tử hoặc (OR) Trả về giá trị “True” nếu ít nhất một giá trị là True |
^ | Toán tử XOR Trả về giá trị True nếu và chỉ nếu chỉ một trong các giá trị là True, các trường hợp còn lại cho giá trị False (sai) |
! | Toán tử phủ định (NOT) Toán hạng đơn tử NOT. Chuyển giá trị từ True sang False và ngược lại. |
Toán tử điều kiện
Toán tử điều kiện là một loại toán tử đặc biệt vì nó bao gồm ba thành phần cấu thành biểu thức điều kiện. Cú pháp:
<biểu thức 1> ? <biểu thức 2> : <biểu thức 3>;
- biểu thức 1: Biểu thức logic. Trả trả về giá trị True hoặc False
- biểu thức 2: Là giá trị trả về nếu <biểu thức=”” 1=””>xác định là True</biểu>
- biểu thức 3: Là giá trị trả về nếu <biểu thức=”” 1=””>xác định là False</biểu>
Ví dụ:
public class Test { public static void main(String[] args) { int a = 20; int b = 3; String s = (a % b == 0) ? "a chia het cho b" : "a khong chia het cho b"; System.out.println(s); } }
Kết quả
a khong chia het cho b
LỆNH ĐIỂU KHIỂN IF – ELSE
Lệnh điều khiển if trong java được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Kết quả lệnh này trả về giá trị True hoặc False . Có các kiểu if-else trong java như sau:
Dạng mệnh đề if
Mệnh đề if được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Khối lệnh sau if được thực thi nếu giá trị của điều kiện là True.
Cú pháp:
if (condition) { // khối lệnh này thực thi // nếu condition = true }
Ví dụ minh hoạ:
public class Test { public static void main(String[] args) { int age = 20; if (age > 18) { System.out.print("Tuổi lớn hơn 18"); } } }
Kết quả:
Tuổi lớn hơn 18
Dạng mệnh đề if-else
Mệnh đề if-else cũng kiểm tra giá trị dạng boolean của điều kiện. Nếu giá trị điều kiện là True thì chỉ có khối lệnh sau if sẽ được thực hiện, nếu là False thì chỉ có khối lệnh sau else được thực hiện.
Cú pháp:
if (condition) { // khối lệnh này được thực thi // nếu condition = true } else { // khối lệnh này được thực thi // nếu condition = false }
Ví dụ minh hoạ:
public class Test { public static void main(String[] args) { int number = 13; if (number % 2 == 0) { System.out.println("Số " + number + " là số chẵn."); } else { System.out.println("Số " + number + " là số lẻ."); } } }
Kết quả:
Số 13 là số lẻ.
Dạng mệnh đề if-else-if
Mệnh đề if-else-if cũng kiểm tra giá trị dạng boolean của điều kiện. Nếu giá trị điều kiện if là True thì chỉ có khối lệnh sau if sẽ được thực hiện. Nếu giá trị điều kiện if else nào là True thì chỉ có khối lệnh sau else if đó sẽ được thực hiện… Nếu tất cả điều kiện của if và else if là False thì chỉ có khối lệnh sau else sẽ được thực hiện.
Cú pháp:
if (condition1) { // khối lệnh này được thực thi // nếu condition1 là true } else if (condition2) { // khối lệnh này được thực thi // nếu condition2 là true } else if (condition3) { // khối lệnh này được thực thi // nếu condition3 là true } ... else { // khối lệnh này được thực thi // nếu tất cả những điều kiện trên là false }
Ví dụ minh hoạ:
public class Test { public static void main(String[] args) { int marks = 65; if (marks < 50) { System.out.println("Tạch!"); } else if (marks >= 50 && marks < 60) { System.out.println("Xếp loại D"); } else if (marks >= 60 && marks < 70) { System.out.println("Xếp loại C"); } else if (marks >= 70 && marks < 80) { System.out.println("Xếp loại B"); } else if (marks >= 80 && marks < 90) { System.out.println("Xếp loại A"); } else if (marks >= 90 && marks < 100) { System.out.println("Xếp loại A+"); } else { System.out.println("Giá trị không hợp lệ!"); } } }
Kết quả:
Kết quả C
SWITCH – CASE
Mệnh đề switch-case trong java được sử dụng để thực thi 1 hoặc nhiều khối lệnh từ nhiều điều kiện.
Cú pháp:
switch (bieu_thuc) { case gia_tri_1: // Khối lệnh 1 break; //tùy chọn case gia_tri_2: // Khối lệnh 2 break; //tùy chọn ...... case gia_tri_n: // Khối lệnh n break; //tùy chọn default: // Khối lệnh này được thực thi // nếu tất cả các điều kiện trên không thỏa mãn }
Ví dụ minh hoạ:
public class SwitchExample { public static void main(String[] args) { int number = 20; switch (number) { case 10: System.out.println("10"); break; case 20: System.out.println("20"); break; case 30: System.out.println("30"); break; default: System.out.println("Not in 10, 20 or 30"); } } }
Kết quả:
Kết quả:20
Mệnh đề Switch-case khi không sử dụng ‘break’
Khi không sử dụng từ khóa ‘break’ trong mệnh đề switch-case. Điều này có nghĩa là các khối lệnh sau case có giá trị phù hợp sẽ được thực thi.
Ví dụ về mệnh đề switch-case:
public class SwitchExample2 { public static void main(String[] args) { int number = 20; switch (number) { case 10: System.out.println("10"); case 20: System.out.println("20"); case 30: System.out.println("30"); default: System.out.println("Not in 10, 20 or 30"); } } }
Kết quả:
20 30 Not in 10, 20 or 30
VIDEO DEMO CODE LÝ THUYẾT
VIDEO DEMO CODE GIẢI BÀI TẬP
Đề bài bài số 1.
Viết chương trình nhập 1 số nguyên từ bàn phím. Xác định đây là số chẵn hay số lẻ?
Yêu cầu:
- Input: Nhập 1 số Nguyên x
- Output: x là số chẵn hoặc x là số lẻ
Đề bài bài số 2.
Viết chương trình nhập 1 số nguyên từ bàn phím (số năm). Xác định đây có phải là năm nhuận?
Yêu cầu:
- Input: Nhập 1 số Nguyên x là số năm (năm tháng)
- Output: x là năm nhuận hoặc không là năm nhuận
Hướng dẫn:
- Năm nhuận là năm chia hết cho 400.
- Năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 100.
Đề bài bài số 3.
Viết chương trình cho phép nhập vào một số nguyên dạng số, sau khi chạy thì chương trình sẽ ghi số đó ra dưới dạng chữ.
Ví dụ: 1 -> Một, 2 -> Hai, …
Đề bài bài số 4.
Viết chương trình nhập a, b là hệ số phương trình bậc nhất dạng ax + b = 0. Giải phương trình bậc nhất này?
Yêu cầu:
- Input: Nhập 2 số a, b bất kỳ
- Output: Nghiệm của phương trình bậc nhất
Hướng dẫn:
Sử dụng lệnh if để xét giá trị của a và b
if(a == 0){ if(b == 0){ PT Vô số nghiệm } else { PT Vô nghiệm } } else { PT Có nghiệm và nghiệm x = -b/a; }
Đề bài bài số 5.
Viết chương trình nhập a, b, c là hệ số phương trình bậc 2 dạng ax2 + bx + c = 0. Giải phương trình bậc 2 này?
Yêu cầu:
- Input: Nhập 3 số a, b, c bất kỳ
- Output: Nghiệm của phương trình bậc 2
Hướng dẫn:
Cứ nhập 3 số a, b và c bất kỳ:
- Xét a
- Nếu a== 0 => Giải phương trình bậc nhất
- Ngược lại (a != 0)
- Tính delta
- Biện luận theo delta
- Delta < 0: PT Vô nghiệm
- Delta = 0: PT Có nghiệm kép x = -b/(2*a)
- Delta > 0: PT Có 2 nghiệm phân biệt
- x1 = (-b+căn(delta))/(2*a)
- x2 = (-b-căn(delta))/(2*a)
Đề bài bài số 6.
Viết chương trình cho phép nhập vào 3 số thực. Kiểm tra giá trị 3 số thực có phải là độ dài của tam giác? Và xác định là tam giác gì?
Yêu cầu:
- Input: Nhập 3 số a, b, c bất kỳ
- Output: a, b, c là độ dài 3 cạnh của tam giác vuông . . . hoặc a, b, c không phải là độ dài 3 cạnh của tam giác.
Hướng dẫn:
- Ba cạnh a, b, c của một tam giác phải thỏa mãn điều kiện là tổng hai cạnh bất kì luôn lớn hơn cạnh còn lại. Tức là a+b>cvà b+c>a và a+c>b. Nếu nó đúng là ba cạnh của một tam giác thì ta tiến hành kiểm tra loại tam giác trên là loại nào. Nếu a, b, c không phải là ba cạnh của một tam giác thì ta in ra màn hình không phải là cạnh của tam giác và kết thúc chương trình.
- Tam giác vuông là tam giác có bình phương một cạnh bằng tổng bình phương hai cạnh còn lại.
- Tam giác đều là tam giác có ba cạnh bằng nhau. Ta chỉ cần kiểm tra điều kiện a==b && b==cnếu đúng thì đó là tam giác đều.
- Tam giác cân là tam giác có hai cạnh bằng nhau. Để kiểm tra xem có phải là tam giác cân hay không ta chỉ cần kiểm tra thoả điều kiện như sau: a==b || a==c || b==c.
- Tam giác tù là tam giác có một góc lớn hơn 90 độ. Giả sử tam giác tù có cạnh lớn là c, hai cạnh a, b còn lại sẽ bằng hai cạnh a’, b’ của một tam giác vuông. Dễ thấy là c sẽ lớn hơn c’, mặt khác c’²=a² +b². Từ điều kiện để là tam giác tù: (a*a>b*b+c*c||b*b>a*a+c*c||c*c >a*a+b*b)
- Trường hợp còn lại sẽ là tam giác nhọn.
Đề bài bài số 7.
Tìm số lớn nhất trong 3 số nhập từ bàn phím
Yêu cầu:
- Input: Nhập 3 số a, b, c bất kỳ
- Output: Số lớn nhất trong 3 số là a hoặc b hoặc c
Hướng dẫn:
- Nhập vào 3 số nguyên từ bàn phím
- Giả sử số đầu tiên là số lớn nhất
- Nếu số thứ 2 lớn hơn số lớn nhất => số lớn nhất là số thứ 2
- Nếu số thứ 3 lớn hơn số lớn nhất => số lớn nhất là số thứ 3
- In ra giá trị của số lớn nhất
Đề bài số 8.
Viết chương trình tính tiền điện và việc tính tiền điện được tính như sau:
>> Nếu số Kwh từ 0->50 thì giá 1000 VNĐ.
>> Ngược lại, nếu số Kwh >50 thì giá 1200 VNĐ.
Yêu cầu:
>> Input: Nhập số nguyên là số Kwh điện sử dụng.
>> Output: Tính số tiền điện đã sử dụng.
Đề bài số 9.
Viết một chương trình tổ chức menu minh hoạ cho các chương trình trên và một chức năng thoát chương trình.