Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Ch06 07 oop java
1. Chương 6. Đối tượng và lớp
6.1. Khai báo lớp
6.2. Tạo các đối tượng
PHẦN II 6.3. Truy nhập đối tượng qua biến tham chiếu
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 6.4. Mảng đối tượng
6.5. Truyền đối tượng cho phương thức
Truyề đố tượ thứ
6.6. Che giấu thông tin
giấ
GV. Ngô Công Thắng
Thắ 6.7. Các thành viên tĩnh
Cá thà tĩ
Bộ môn Công nghệ phần mềm 6.8. Đối tượng và lớp hằng
Đố tượ và hằ
Khoa Công nghệ thông tin 6.9. Các lớp lồng nhau
Cá lớ lồ
Bài tập chương 6
tậ
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 2
6.1. Khai báo lớp 6.1.1. Cú pháp khai báo lớp
6.1.1. Cú pháp khai báo lớp
Cú phá bá lớ class TenLop
6.1.2. Điều khiển truy nhập {
6.1.3. Định nghĩa các biến của lớp //Khai báo các thành viên dữ liệu
6.1.4. Định nghĩa các phương thức của lớp //và phương thức của lớp
6.1.5. Ví dụ về khai báo lớp }
Không có dấu
chấm phẩy
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 3 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 4
2. 6.1.2. Điều khiển truy nhập 6.1.2. Điều khiển truy nhập
l Java có các modifier để điều khiển việc
có để điề khiể việ l Các từ khóa modifier được đặt trước các
từ khó đượ đặ trướ cá
truy nhập dữ liệu, phương thức và lớp: khai báo dữ liệu, phương thức và lớp.
public dùng cho dữ liệu, phương thức và l Nếu không dùng modifier nào thì mặc định
lớp; private chỉ dùng cho dữ liệu và dữ liệu và phương thức có thể truy nhập
phương thức. từ tất cả các lớp trong cùng package.
l public cho phép truy nhập lớp, dữ liệu và
phương thức từ bất kỳ lớp nào.
l private chỉ cho phép truy nhập dữ liệu v à
phương thức từ bên trong lớp.
thứ từ lớ
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 5 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 6
6.1.3. Định nghĩa các biến của lớp 6.1.3. Định nghĩa các biến của lớp
l Dữ liệu của lớp chính là các biến của lớp.
liệ củ lớ chí là biế củ lớ l Khác với C++:
Khá vớ
Các biến của lớp được chia thành hai loại, l Các biến của lớp (cả biến thực thể và biến
biế củ lớ (cả biế thự thể biế
biến thực thể và biến tĩnh. Biến thực thể là tĩnh) phải khai báo và định nghĩa ngay trong
phả bá và đị nghĩ
biến của riêng từng đối tượng, biến tĩnh là mô tả lớp.
tả
biến của cả lớp đối tượng, dùng chung l Khi khai báo biến lớp có thể khởi tạo giá trị
cho tất cả các đối tượng. ban đầu cho chúng. .
l Cú pháp khai báo biến của lớp giống như
khai báo biến thông thường.
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 7 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 8
3. 6.1.4. Định nghĩa các phương thức
6.1.5. Ví dụ về khai báo lớp
của lớp
l Các phương thức của lớp phải được định nghĩa public class circle
{
ngay trong mô tả lớp.
tả private double radius = 1.0;
l Hàm tạo là một phương thức đặc biệt của lớp public circle()
{ }
được dùng để tạo đối tượng của lớp. Hàm tạo
đượ dù để đố tượ củ lớ Hà tạ puplic circle(double newRadius) //Ham tao mot doi so
trong Java giống trong C++, chỉ khác là không
giố chỉ khá là {
được thực hiện tự động mà phải gọi. Trong lớp radius = newRadius;
có thể có nhiều hàm tạo chồng nhau, mỗi hàm
thể nhiề hà tạ chồ mỗ hà }
//Tinh dien tich
tạo cho ta một cách tạo đối tượng của lớp.
mộ cá tạ đố tượ củ lớ public double findArea()
l Khác với C++, trong Java không có hàm hủy,
Khá vớ có hủ {
bởi vì công việc hủy đối tượng và dọn dẹp bộ
vì việ hủ đố tượ và dẹ bộ return 3.14159 * radius * radius;
}
nhớ được JVM thực hiện tự động. }
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 9 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 10
6.2.1. Biến tham chiếu và kiểu
6.2. Tạo các đối tượng
tham chiếu
6.2.1. Biến tham chiếu và kiểu tham chiếu l Trong Java, lớp được coi là kiểu tham chiếu.
6.2.2. Cú pháp tạo đối tượng
Cú phá tạ đố tượ Một biến có kiểu lớp được gọi là biến tham
6.2.3. Biến kiểu cơ bản và biến kiểu tham chiếu chiếu đối tượng (khác C++, biến có kiểu lớp là
chiế đố tượ (khá biế có kiể lớ là
Biế kiể bả và biế kiể chiế
đối tượng). Biến tham chiếu đối tượng có thể
tượ Biế chiế đố tượ có thể
6.2.4. Giá trị null chứa tham chiếu tới đối tương của lớp.
chứ chiế tớ đố củ lớ
l Cú pháp khai báo biến tham chiếu đối tượng
như sau:
sau:
TenLop TenBienThamChieu;
Ví dụ: Circle c1;
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 11 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 12
4. 6.2.3. Biến kiểu cơ bản và biến
6.2.2. Cú pháp tạo đối tượng
kiểu tham chiếu
l Để tạo đối tượng của một lớp ta phải gọi
đố tượ củ mộ lớ phả gọ l Biến kiểu cơ bản chứa giá trị của kiểu cơ
Biế kiể bả chứ giá trị kiể
hàm tạo của lớp bằng toán tử new bản, biến kiểu tham chiếu chứa giá trị là
new TenLop(DS Các đối số); tham chiếu tới nơi để đối tượng.
Ví dụ: new Circle(5); Biến kiểu cơ bản int i = 1; i 1
l Toán tử new tạo đối tượng và trả về tham
c
chiếu tới đối tượng, tham chiếu này phải Biến kiểu tham chiếu Circle c; reference c:Circle
đặt trong một biến tham chiếu. radius = 1
Ví dụ: Circle c = new Circle();
Tạo dùng new Circle(1);
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 13 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 14
6.2.3. Biến kiểu cơ bản và biến
6.2.4. Giá trị null
kiểu tham chiếu
l Khi gán một biến cho một biến thì giá trị
gá mộ biế mộ biế thì giá trị l Nếu một biến kiểu tham chiếu không tham
của biến này được đưa sang biến kia, hai chiếu tới đối tượng nào thì nó chứa giá trị
chiế tớ đố tượ nà thì chứ giá trị
biến có cùng giá trị. null.
l Java sẽ gán giá trị mặc định là null cho
sẽ giá trị đị là
l Với biến kiểu tham chiếu, vì giá trị là tham
biến có kiểu tham chiếu.
chiếu nên sau khi gán hai biến cùng tham
l Java tự động giải phóng v ùng nhớ của đối
chiếu tới một đối tượng, để lại một đối
tượng không được tham chiếu, bởi vậy,
tượng không được tham chiếu. JVM sẽ tự nếu không cần dùng tới đối tượng nữa, ta
động tìm và giải phóng các vùng nhớ cho biến tham chiếu tới đối tượng đó bằng
không được tham chiếu nữa. null.
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 15 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 16
5. 6.3. Truy nhập đối tượng qua biến 6.3. Truy nhập đối tượng qua
tham chiếu biến tham chiếu
l Sau khi một đối tượng được tạo ta có thể l Khi đối tượng được tạo, bên trong đối tượng
luôn có một biến tham chiếu tới chính đối tượng
có biế chiế tớ chí đố tượ
truy nhập dữ liệu và gọi các phương thức
nhậ dữ liệ và cá thứ đó. Biến tham chiếu này có tên là từ khóa this.
của nó qua biến tham chiếu tới nó.
nó biế chiế tớ nó l Nếu một phương thức có tên tham số trùng với
l Cú pháp:
phá tên biến của lớp thì trong phương thức ta có thể
biế củ lớ thì thứ có thể
truy nhập biến của lớp qua biến this.
nhậ biế củ lớ biế .
TenBienThamChieu.Bien
Ví dụ: Lớp Circle có một biến Radius để chứa bán
Lớ có biế để chứ bá
TenBienThamChieu.PThuc(DS Đối số) kính, hàm tạo Circle(doube Radius) có tên tham số
hà tạ có số
trùng với tên biến của lớp => Để gán giá trị của tham
trù vớ biế củ lớ => giá trị
l Ví dụ: số cho biến lớp ta phải dùng this.Radius=Radius
biế lớ phả dù
Circle c1 = new Circle(1.5); l Biến this cũng có thể dùng trong hàm tạo để gọi
Biế cũ có thể hà tạ để
một hàm tạo khác cùng lớp.
hà tạ khá cù lớ
c1.findArea();
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 17 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 18
6.5. Truyền đối tượng cho
6.4. Mảng đối tượng
phương thức
l Mảng các đối tượng thực chất là mảng các biến l Giống như mảng, truyền đối tượng cho
tham chiếu tới đối tượng.
chiế tớ đố tượ phương thức thực chất là truyền tham
thứ thự chấ là truyề
l Để có mảng các đối tượng ta phải khai báo
cá đố tượ phả bá
mảng các biến tham chiếu tới đối tượng rồi tạo chiếu của đối tượng cho phương thức.
chiế củ đố tượ thứ
các đối tượng và gán tham chiếu cho các phần
đố tượ và chiế cá phầ Bởi vậy trong phương thức có thể tác
tử của mảng.
mả động tới đối tượng giống như ở bên ngoài
Ví dụ: phương thức.
- Tạo mảng 10 biến tham chiếu tới lớp Circle:
mả biế chiế tớ lớ
Circle[ ] mang = new Circle[10]; l Để có thể truyền đối tương cho phương
- Tạo 10 đối tượng và cho các biến tham chiếu tới
10 tượ và cá biế chiế tớ thức thì khi định nghĩa phương thức phải
chúng:
chú khai báo tham số là tham chiếu tới đối
for(i=0;i<mang.length;i++) mang[i] = new Circle();
tượng.
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 19 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 20
6. 6.6. Che giấu thông tin 6.6. Che giấu thông tin
l Để đảm bảo nguyên tắc bao gói thông tin, dữ l Phương thức trả về dữ liệu lớp được gọi
liệu của lớp phải là private. là getter (mutator), phương thức thiết lập
thứ thiế lậ
l Khi dữ liệu của lớp để ở private thì bên ngoài
dữ liệ củ lớ để thì ngoà giá trị mới cho dữ liệu lớp được gọi là
giá trị dữ liệ lớ đượ gọ là
lớp không thể truy nhập trực tiếp tới dữ liệu của setter (accessor).
đối tượng thông qua tham chiếu tới đối tượng. l Phương thức getter thường có tên là:
l Để cho phép bên ngoài lớp có thể lấy dữ liệu và
phé ngoà lớ có thể dữ liệ và l getTenBien
thay đổi dữ liệu của đối tượng thì trong mô tả
đổ dữ liệ củ đố tượ thì tả l isTenBien nếu kiểu trả về là boolean.
nế kiể trả
lớp phải có phương thức trả về dữ liệu lớp và
l Phương thức setter thường có tên là:
thứ thườ có là
thiết lập giá trị mới cho dữ liệu lớp.
thiế lậ giá trị dữ liệ lớ
l setTenBien
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 21 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 22
6.7. Các thành viên tĩnh 6.7. Các thành viên tĩnh
l Giống như C++, các biến và phương thức của l Để khai báo biến và phương thức tĩnh ta
lớp được chia thành hai loại: đặt từ khóa static trong khai báo biến và
từ khó bá biế và
l Biến và phương thức thực thể
Biế và thứ thự thể phương thức.
thứ
l Biến và phương thức tĩnh
Biế và thứ tĩ private static int numberOfObjects;
l Biến và phương thức thực thể là của đối tượng,
Biế và thứ thự thể đố tượ public static int getNumberOfObjects()
chúng gắn với đối tượng.
chú gắ vớ đố tượ { }
l Bi ến và phương thức tĩnh là của lớp, được dùng l Để khai báo hằng của lớp, ta thêm từ
chung bởi tất cả các đối tượng của lớp. Nếu một khóa final trong khai báo biến tĩnh. Ví dụ:
đối tượng thay đổi biến tĩnh thì các đối tượng
tượ đổ biế tĩ thì đố tượ private final static double PI = 3.1515;
tượng khác cùng lớp sẽ bị ảnh hưởng.
tượ khá cù lớ sẽ hưở
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 23 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 24
7. 6.7. Các thành viên tĩnh 6.8. Đối tượng và lớp hằng
l Phương thức thực thể được gọi theo cú l Một đối tượng mà dữ liệu của nó không thể thay
pháp sau:
phá đổi từ khi sinh ra được là đối tượng hằng và lớp
từ đượ là đố tượ hằ và
của nó được gọi là lớp hằng.
nó đượ gọ là hằ
BienThamChieuDT.TenPhuongThuc()
l Để có lớp và đối tượng hằng chỉ cần cho tất cả
và đố tượ hằ chỉ tấ cả
l Phương thức tĩnh có thể được gọi theo dữ liệu là private và bỏ tất cả các phương thức
liệ là và cả thứ
hai cách:
cá setter.
BienThamChieuDT.TenPhuongThuc() l Lưu ý: Một lớp có tất cả dữ liệu là private và
TenLop.TenPhuongThuc() không có phương thức setter chưa chắc đã là
có thứ chắ là
l Chỉ nên gọi phương thức tĩnh dùng tên lớp hằng, vì nếu phương thức getter mà trả về
hằ vì thứ mà trả
tham chiếu tới dữ liệu lớp thì vẫn có thể thay đổi
chiế tớ dữ liệ lớ thì có thể đổ
lớp. được.
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 25 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 26
6.9. Các lớp lồng nhau 6.9. Các lớp lồng nhau
l Kh ác với C++, Java cho phép mô tả một lớp bên l Lớp bên trong một lớp khác có các đặc
trong mô tả một lớp khác. Đây được gọi là sự
tả lớ khá đượ gọ là điểm sau:
điể
lồng nhau của các lớp.
củ cá lớ
l Đối tượng của lớp trong có thể tạo bên trong
l Lớp bên trong một lớp khác có các đặc điểm
mộ lớ khá có đặ điể lớp ngoài hoặc bên trong một lớp khác.
ngoà hoặ mộ lớ khá
sau:
l Nếu tạo trong lớp khác thì theo cú pháp sau:
tạ lớ khá thì cú phá
l Có thể truy nhập biến và phương thức của lớp ngoài
thể nhậ biế và thứ củ lớ ngoà
l Nế u lớp bên trong không phải static thì phải tạo
chứa nó.
chứ nó
đối tượng lớp ngoài trước, sau đó dùng:
tượ lớ ngoà trướ đó
l Có thể khai báo là public, private và protected giống
thể bá là và giố TenLopNgoai.TenLopTrong TenBien = DoiTuongLopNgoai. new TenLopTrong();
như các thành viên của lớp ngoài.
cá thà củ lớ ngoà l Nế ulớp bên trong là static thì chỉ cần dùng cú
lớ là thì chỉ dù cú
l Có thể khai báo là static. Nếu lớp trong là static thì
thể bá là Nế lớ là thì pháp sau:
phá
không thể truy nhập các thành viên không phải tĩnh
thể nhậ cá thà phả tĩ TenLopNgoai.TenLopTrong TenBien = TenLopNgoai. new TenLopTrong();
của lớp ngoài.
lớ ngoà
Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 27 Bài giảng LT JAVA - Phần 2,Chương 6 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 28
8. Chương 7. Xâu ký tự 7.1. Xâu ký tự trong Java
7.1. Xâu ký tự trong Java
tự l Một xâu ký tự là một dãy các ký tự. Khác với
tự cá tự Khá vớ
C++, trong Java xâu ký tự không phải là mảng
tự phả là
7.2. Lớp String các ký tự mà là một đối tượng.
tự đố tượ
7.3. Lớp Character
Lớ l Java có 3 lớp xâu ký tự được dùng để lưu trữ và
có lớ tự đượ dù để trữ
xử lý các xâu ký tự: Lớp String, lớp StringBuffer
cá tự Lớ lớ
7.4. Lớp StringBuffer và lớp StringTokenizer.
7.5. Lớp StringTokenizer l Lớp String được dùng để tạo ra các xâu ký tự cố
đượ dù để cá tự
Bài tập chương 7 định, không thể thay đổi được. Lớp StringBuffer
thể đổ đượ Lớ
được dùng để tạo ra các xâu ký tự có thể thay
đượ dù để cá tự thể
đổi được. Lớp StringTokenizer được dùng để
đượ Lớ đượ dù để
lưu trữ các xâu ký tự và tách ra các xâu con.
trữ tự cá
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 1 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 2
String
+String()
7.2. Lớp String +String(value: String)
+String(value: char[])
+charAt(index: int): char
+compareTo(anotherString: String): int
+compareToIgnoreCase(anotherString: String): int
+concat(anotherString: String): String
l Lớp java.lang.String được tự động nạp
java.lang.String đượ tự độ nạ +endsWithSuffixe(suffix: String): boolean
+equals(anotherString: String): boolean
vào trong mọi chương trình java => không +equalsIgnoreCase(anotherString: String): boolean
+indexOf(ch: int): int
+indexOf(ch: int, fromIndex: int): int
cần dùng lệnh nạp (import) lớp. +indexOf(str: String): int
+indexOf(str: String, fromIndex: int): int
+intern(): String
l Lớp String có nhiều hàm tạo cho phép tạo +regionMatches(toffset: int, other: String, offset: int, len: int): boolean
+length(): int
các đối tượng xâu ký tự theo nhiều cách +replace(oldChar: char, newChar: char): String
+startsWith(prefix: String): boolean
+subString(beginIndex: int): String
khác nhau và nhiều phương thức dùng để
khá và nhiề thứ dù để +subString(beginIndex: int, endIndex: int): String
+toCharArray(): char[]
lấy từng ký tự của xâu, so sánh xâu, tìm
từ tự sá tì
+toLowerCase(): String
+toString(): String
+toUpperCase(): String
xâu con, tách xâu con… +trim(): String
+copyValueOf(data: char[]): String
+valueOf(c: char): String
+valueOf(data: char[]): String
+valueOf(d: double): String
+valueOf(f: float): String
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 3 +valueOf(i:àint): String
B i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 4
+valueOf(l: long): String
9. 7.2. Lớp String 7.2.1. Tạo xâu ký tự lớp String
7.2.1. Tạo xâu ký tự lớp String
Tạ tự l Lớp String có nhiều hàm tạo để tạo đối
có nhiề hà tạ để đố
7.2.2. Lấy chiều dài và từng ký tự của xâu
Lấ chiề dà và tự tượng xâu ký tự, hay dùng nhất là hàm tạo
7.2.3. Nối các xâu
Nố cá String(Hằng xâu):
7.2.4. Tách các xâu con
Tá cá String BienXau = new String(Hằng xâu);
String(Hằ
7.2.5. So sánh xâu
hoặc
hoặ
7.2.6. Chuyển đổi xâu
Chuyể đổ
String BienXau = Hằng xâu;
Hằ
7.2.7. Tìm ký tự và xâu con trong một xâu
Tì tự mộ
7.2.8. Chuyển đổi giữa mảng ký tự và xâu
Chuyể đổ giữ mả tự l Ví dụ:
7.2.9. Chuyển các ký tự và giá trị số thành đối
Chuyể cá tự giá trị thà đố String strVar = new String(“DHNN1 HN”);
String(“ HN”
tượng xâu ký tự
tượ tự
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 5 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 6
7.2.2. Lấy chiều dài và từng ký tự
7.2.1. Tạo xâu ký tự lớp String
của xâu
l Một đối tượng xâu ký tự String sau khi tạo l Để lấy chiều dài một xâu ký tự ta dùng
không thể thay đổi được, tức là nội dung của nó
thể đổ đượ tứ là củ nó phương thức length()
không thay đổi được. l Để lấy từng ký tự của xâu ta dùng phương
l Ví dụ: thức charAt(index), trong đó index có giá
thứ charAt(index), trong đó có giá
String s = new String(“Java”);
String(“ Java” trị từ 0 đến chiều dài xâu trừ 1.
trị chiề dà trừ
s = "HTML"; l Ví dụ:
Khi gán s = “HTML” tạo ra một đối tượng xâu
gá HTML” mộ đố tượ String s = "Welcome";
mới có nội dung là “HTML” và gán tham chiếu
có là HTML” chiế s.length() cho giá trị 7
giá trị
tới s, còn đối tượng xâu có nội dung là “Java”
đố tượ có là Java”
s.charAt(1) cho ký tự ‘e’
tự
không được tham chiếu nữa sẽ bị hủy.
đượ chiế nữ sẽ
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 7 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 8
10. 7.2.3. Nối các xâu 7.2.4. Tách các xâu con
l Để nối hai hoặc nhiều xâu ký tự ta có thể l Có thể lấy ra một phần của đối tượng xâu ký tự
thể mộ phầ củ đố tượ tự
dùng phương thức concat() hoặc dùng bằng phương thức substring(). Phương thức
thứ substring(). Phương thứ
phép toán cộng.
phé toá cộ này có 2 dạng:
có dạ
l substring(beginIndex,endIndex) trả về một đối tượng
trả đố tượ
l Ví dụ: xâu chứa ký tự từ beginIndex đến endIndex-1.
chứ tự đế endIndex-
String s3 = s1.concat(s2); l substring(beginIndex) trả về một đối tượng xâu chứa
trả đố tượ chứ
ký tự từ beginIndex đến cuối xâu.
tự đế cuố
hoặc
hoặ
l Ví dụ:
String s3 = s1 + s2;
String s = “DHNN1";
l Trong Java hay dùng phép cộng để ghép
dù phé cộ để ghé s.substring(2, 3) cho “N”
hai hoặc nhiều xâu ký tự.
hoặ nhiề tự s.substring(3) cho “N1”
N1”
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 9 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 10
7.2.5. So sánh xâu 7.2.5. So sánh xâu
l Giống C++, trong Java không dùng được l Nếu muốn so sánh hai xâu ký tự không
muố sá tự
các phép toán so sánh để so sánh hai xâu phân biệt chữ hoa, chữ thường thì dùng
ký tự.
tự phương thức equalsIgnoreCase() hoặc
l Muốn so sánh hai xâu ký tự ta phải dùng
Muố sá tự phả dù compareToIgnoreCase().
phương thức equals() hoặc compareTo()
thứ hoặ
l Ví dụ:
l s1.equals(s2) cho true nếu nội dung s1 giống
nế nộ giố
nội dung s2. “dhnn1”.equalsIgnoreCase(“DHNN1”) cho
dhnn1” .equalsIgnoreCase(“ DHNN1”
l s1.compareTo(s2) cho giá trị 0 nếu s1=s2, giá trị true.
giá trị
cho giá trị < 0 nếu s1<s2 và cho giá trị > 0
giá trị nế và giá trị
nếu s1>s2. (giống hàm strcmp() trong C++).
(giố hà
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 11 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 12
11. 7.2.5. So sánh xâu 7.2.6. Chuyển đổi xâu
l Để kiểm tra xem một xâu có bắt đầu hay
kiể mộ có đầ l Mặc dù nội dung của đối tượng xâu String
kết thúc bằng một xâu nào đó ta dùng không thể thay đổi nhưng ta có thể dùng các
thể đổ có thể cá
phương thức startWith(prefix) và phương thức toLowerCase(), toUpperCase(),
trim() và replace() để tạo ra các xâu mới.
và replace() cá mớ
endWith(suffix)
l s.toLowerCase() cho xâu ký tự chữ thường của
tự chữ thườ củ
l Ví dụ: s.
String s = “Welcome to Java”;
Java” l s.toUpperCase() cho xâu ký tự chữ hoa của s.
tự chữ củ
s. startWith(“Wel”) cho giá trị true
startWith(“ Wel” giá trị l s.trim() cho xâu ký tự của s nhưng không có dấu
tự có
s.endWith(“Java”) cho giá trị true
s.endWith(“ Java” giá trị cách ở hai đầu.
đầ
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 13 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 14
7.2.6. Chuyển đổi xâu 7.2.6. Chuyển đổi xâu
l s.replace(oldChar, newChar) cho xâu ký tự của l Ví dụ:
s nhưng thay thế tất cả các ký tự oldChar bằng
thế cả tự bằ "Welcome".replace(‘e’, ‘A’) => “WAlcome”
"Welcome".replace(‘ WAlcome”
ký tự newChar.
"Welcome".replaceFirst("e", "A") => “WAcome”
WAcome”
l s.replaceFirst(oldSubstr,newSubstr) cho xâu ký
"Welcome".replaceAll("e", "A") => “WAlcomA”
WAlcomA”
tự của s nhưng thay thế xâu con oldSubstr bằng
thế bằ
xâu con newSubstr tại vị trí xuất hiện đầu tiên.
tạ vị trí xuấ hiệ đầ
l s.replaceAll(oldSubstr,newSubstr) cho xâu ký tự tự
của s nhưng thay thế xâu con oldSubstr bằng
thế bằ
xâu con newSubstr tại tất cả các vị trí xuất hiện.
tạ tấ cả vị trí xuấ hiệ
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 15 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 16
12. 7.2.7. Tìm ký tự và xâu con trong 7.2.7. Tìm ký tự và xâu con trong
một xâu một xâu
l Dùng các phương thức indexOf() và
cá thứ và l Ví dụ:
lastIndexOf() để tìm một ký tự hoặc một xâu con
để mộ tự hoặ mộ "Welcome to Java!".indexOf('W') returns 0.
trong một xâu ký tự.
m ộ tự "Welcome to Java!".indexOf('x') returns -1.
indexOf(int ch) "Welcome to Java!".indexOf('o', 5) returns 9.
lastIndexOf(int ch)
"Welcome to Java!".indexOf("come") returns 3.
indexOf(int ch, int fromIndex)
lastIndexOf(int ch, int endIndex) "Welcome to Java!".indexOf("Java", 5) returns 11.
indexOf(String str) "Welcome to Java!".indexOf("java", 5) returns -1.
lastIndexOf(String str)
indexOf(String ch, int fromIndex)
lastIndexOf(String str, int endIndex)
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 17 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 18
7.2.8. Chuyển đổi giữa mảng ký tự 7.2.9. Chuyển các ký tự và giá trị
và xâu số thành đối tượng xâu ký tự
l Chuyển đối tượng xâu ký tự thành mảng các ký l Phương thức valueOf được chồng để
thứ đượ chồ để
tự dùng phương thức toCharArray(). Ví dụ:
thứ Ví chuyển một ký tự hoặc một số thành xâu
char[] chars = “Java”.toCharArray();
Java” ký tự.
l Chuyển mảng các ký tự thành đối tượng xâu ký
Chuyể mả cá tự thà đố tượ
l Ví dụ:
tự dùng hàm tạo String(mảng kt) hoặc phương
hà tạ String(mả hoặ
thức valueOf(m ảng kt). String str = String.valueOf(5.44); cho “5.44”
5.44”
l Ví dụ:
String str = new String(new char[] {'J','a','v','a'});
String str = String.valueOf(new char[] {'J','a','v','a'});
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 19 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 20
13. 7.3. Lớp Character 7.3. Lớp Character
Character
l Với mỗi kiểu dữ liệu cơ sở, Java có một
mỗ kiể dữ liệ sở có
lớp gói (wrapper class): Character, +Character(value: char)
+charValue(): char
Boolean, Byte, Short, Integer, Long, Float, +compareTo(anotherCharacter: Character): int
Double. Các kiểu dữ liệu cơ sở được +equals(anotherCharacter: Character): boolean
+isDigit(ch: char): boolean
đóng gói trong các lớp tương ứng. Các giá +isLetter(ch: char): boolean
trị kiểu cơ sở có thể dùng như các đối
trị kiể sở thể cá đố +isLetterOrDigit(ch: char): boolean
+isLowerCase(ch: char): boolean
tượng. +isUpperCase(ch: char): boolean
+toLowerCase(ch: char): char
l Tất cả các lớp gói trên đặt trong java.lang +toUpperCase(ch: char): char
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 21 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 22
7.3. Lớp Character 7.4. Lớp StringBuffer
Ví dụ:
l
7.4.1. Giới thiệu về lớp StringBuffer
Giớ thiệ về
Character charObj = new Character('b');
charObj.compareTo(new Character('a')) returns 1
7.4.2. Tạo đối tượng xâu StringBuffer
charObj.compareTo(new Character('b')) returns 0 7.4.3. Thay đổi xâu ký tự StringBuffer
đổ tự
charObj.compareTo(new Character('c')) returns -1
charObj.compareTo(new Character('d') returns –2
charObj.equals(new Character('b')) returns true
charObj.equals(new Character('d')) returns false
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 23 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 24
14. 7.4.1. Giới thiệu về lớp StringBuffer 7.4.1. Giới thiệu về lớp StringBuffer
StringBuffer
l Lớp StringBuffer được dùng như lớp
đượ dù lớ +append(data: char[]): StringBuffer
String nhưng mềm dẻo hơn. Nội dung của +append(data: char[], offset: int, len: int): StringBuffer
+append(v: aPrim itiveType): StringBuffer
đối tượng StringBuffer có thể thay đổi +append(str: String): StringBuffer
+capacity(): int
trong khi nội dung của đối tượng String thì +charAt(index: int): char
+delete(startIndex: int, endIndex: int): StringBuffer
không. +deleteCharAt(int index): StringBuffer
+insert(index: int, data: char[], offset: int, len: int): StringBuffer
+insert(offset: int, data: char[]): StringBuffer
l Lớp StringBuffer có 3 hàm tạo và trên 30
có hà tạ và +insert(offset: int, b: aPrim itiveType): StringBuffer
+insert(offset: int, str: String): StringBuffer
phương thức để quản lý vùng nhớ chứa
thứ để quả vù nhớ chứ +length(): int
+replace(int startIndex, int endIndex, String str): StringBuffer
xâu (buffer) và thay đổi xâu. +reverse(): StringBuffer
+setCharAt(index: int, ch: char): void
+setLength(new Length: int): void
+substring(start: int): StringBuffer
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 25 +substring(start:i giảng LT JAVAint): 2,Chương 7 GV. Ngô Công Thắng
int, end: - Phần StringBuffer
Bà giả Phầ 2,Chương Thắ 26
7.4.2. Tạo đối tượng xâu 7.4.2. Tạo đối tượng xâu
StringBuffer StringBuffer
l Có thể tạo đối tượng xâu StringBuffer l Ví dụ:
bằng một trong 3 hàm tạo: StringBuffer s = new StringBuffer(“DHNN1”);
StringBuffer(“ DHNN1”
l StringBuffer() => Tạo một đối tượng xâu
Tạ mộ đố tượ
không chứa ký tự nào, có kích thước là 16.
chứ tự có thướ là
l StringBuffer(int length) => Tạo một đối tượng
Tạ mộ đố tượ
xâu không chứa ký tự nào, có kích thước là
length.
l StringBuffer(String str) => Tạo một đối tượng
Tạ mộ đố tượ
xâu chứa str, có kích thước là 16 +
chứ có thư ớ là
str.length().
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 27 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 28
15. 7.4.3. Thay đổi xâu ký tự 7.4.3. Thay đổi xâu ký tự
StringBuffer StringBuffer
l Dùng phương thức append() để thêm vào cuối xâu
thứ append() và cuố l Dùng phương thức insert() để chèn vào
thứ insert() chè và
StringBuffer các giá trị boolean, char, char array, double,
cá giá trị
float, int, long và String.
và một vị trí xác định trong xâu StringBuffer
l Ví dụ: Các lệnh sau tạo ra xâu “Welcome to Java”
Cá lệ tạ Java” các giá trị boolean, char, char array,
StringBuffer strBuf = new StringBuffer(); double, float, int, long và String.
strBuf.append("Welcome"); insert(p, str) => Chèn str vào vị trí p
strBuf.append(' ');
Ví dụ: StringBuffer s = new StringBuffer(“Welcome to Java”);
strBuf.append("to"); s.insert(11,”HTML and ”); => “Welcome to HTML and Java”
strBuf.append(' ');
strBuf.append("Java");
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 29 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 30
7.4.3. Thay đổi xâu ký tự
7.5. Lớp StringTokenizer
StringBuffer
l Xóa ký tự của xâu: l Một xâu ký tự có thể được tách thành
l delete(beginIndex,endIndex) => Xóa các ký tự từ vị trí
Xó cá tự trí các xâu con (mảnh, token) bởi các ký
beginIndex đến endIndex-1
đế endIndex-
l deleteCharAt(index) => Xóa ký tự tại vị trí index
Xó tự vị trí
tự phân tách (delimiter). Để có thể
Đảo ngược xâu: reverse()
tách thành các xâu con ta phải dùng
l ngượ
đối tượng xâu ký tự lớp
l Thay thế các ký tự của xâu:
thế tự
replace(beginIndex,endIndex,str) => Thay các ký tự từ
cá tự
StringTokenizer.
beginIndex đến endIndex bằng str.
đế bằ l Lớp StringTokenizer nằm trong gói
l Thay thế ký tự tại một vị trí: setCharAt(index,ch)
thế tự mộ vị trí java.util và được tự động import khi
biên dịch.
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 31 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 32
16. 7.5. Lớp StringTokenizer 7.5. Lớp StringTokenizer
l Các hàm tạo:
hà tạ l Một số phương thức:
StringTokenizer(String s) boolean hasMoreTokens()
StringTokenizer(String s, String delim) String nextToken()
StringTokenizer(String s, String delim, String nextToken(String delim)
boolean returnTokens)
l Ví dụ: l Ví dụ:
String s = "Java is cool."
String s = "Java is cool."
StringTokenizer tkz = new StringTokenizer(s);
StringTokenizer tkz = new StringTokenizer(s);
System.out.println("Tong so token = " + tkz.countTokens());
StringTokenizer tkz = new StringTokenizer(s,"ac"); while (tkz.hasMoreTokens())
StringTokenizer tkz = new StringTokenizer(s,"ac",true); System.out.println(tkz.nextToken());
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 33 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 34
Bài tập chương 7 Bài tập chương 7
Bài 1. Viết chương trình nhập vào một xâu
Viế trì nhậ và mộ Bài 2. Viết phương thức đếm số lần xuất
ký tự và một ký tự. Gọi phương thức đếm hiện của mỗi chữ số trong một xâu ký tự
số lần xuất hiện của ký tự trong xâu ký tự String. Tiêu đề phương thức đếm có dạng:
đề thứ đế có
String đã nhập. Tiêu đề phương thức đếm public static int[] count(String str)
có dạng: Phương thức trả về mảng 10 phần tử, mỗi
public static int count(String str, char ch)
phần tử chứa số đếm được cho 1 chữ số.
Ví dụ: count(“Welcome”,’e’) trả về 2
count(“ Welcome” trả
Viết chương trình nhập vào 1 xâu ký tự có
chứa số, hiển thị kết quả đếm cho từng
chữ số có mặt trong xâu.
chữ
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 35 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 36
17. Bài tập chương 7 Bài tập chương 7
Bài 3. Viết phương thức chuyển một số hex
Viế thứ chuyể mộ số Bài 4. Viết phương thức chuyển một số nhị
Viế thứ chuyể mộ số nhị
cho dưới dạng xâu ký tự thành số nguyên phân cho dưới dạng xâu ký tự thành số
thập phân. Tiêu đề của phương thức có nguyên thập phân. Tiêu đề của phương
dạng sau: thức có dạng sau:
int parseHex(String hexString) int parseBin(String binString)
Viết chương trình nhập vào 1 số hex dưới Viết chương trình nhập vào 1 số binary
dạng xâu, gọi phương thức parseHex() để dưới dạng xâu, gọi phương thức
chuyển thành số nguyên thập phân và
chuyể thà số thậ và parseBin() để chuyển thành số nguyên
để chuyể thà số
đưa kết quả ra màn hình.
kế quả mà hì thập phân và đưa kết quả ra màn hình.
thậ và kế quả mà hì
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 37 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 38
Bài tập chương 7 Bài tập chương 7
Bài 5. Viết phương thức chuyển một số
Viế thứ chuyể mộ số Bài 6. Viết phương thức sắp xếp các ký tự
Viế thứ sắ xế cá tự
nguyên dương thập phân thành số hex trong một xâu ký tự theo chiều tăng dần
dưới dạng xâu ký tự. Tiêu đề của phương và trả về xâu ký tự đã sắp xếp. Tiêu đề
thức có dạng sau: của phương thức có dạng sau:
String convertDecimalToHex(int value) String sort(String s)
Viết chương trình nhập vào 1 số nguyên Viết chương trình nhập vào 1 xâu ký tự,
dương, gọi phương thức này để chuyển đưa ra màn hình xâu ký tự đã sắp xếp.
thành số hex và đưa kết quả ra màn hình.
thà số và kế quả mà hì
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 39 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 40
18. Bài tập chương 7 Bài tập chương 7
Bài 7. Viết phương thức kiểm tra xem hai từ
Viế thứ kiể từ Bài 8. Viết chương trình nhập vào một xâu
có phải là anagram. Hai từ được gọi là ký tự. Đếm xem trong xâu đó có bao nhiêu
anagram với nhau nếu chúng có số chữ từ. Biết rằng các từ phân cách nhau bởi
Biế rằ cá từ cá bở
cái giống nhau từng đôi một, không kể đến dấu cách và các dấu chấm câu. Đưa kết
cá và dấ chấ kế
quả ra màn hình.
thứ tự. Tiêu đề của phương thức có dạng
sau: Bài 9. Viết chương trình nhập vào một dãy
số thực dưới dạng xâu ký tự, các số thực
boolean isAnagram(String s1, String s2) phân cách nhau bởi ít nhất một dấu cách.
Viết chương trình nhập vào 2 từ, đưa kết
Viế trì nhậ và từ kế Tính tổng các số thực và đưa kết quả ra
quả kiểm tra ra màn hình.
quả kiể mà hì màn hình.
Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 41 Bà i giảng LT JAVA - Phần 2,Chương 7 GV. Ngô Công Thắng
giả Phầ 2,Chương Thắ 42