Mangngon Ngu Lap Trinh Java
-
Upload
nguyen-xuan -
Category
Documents
-
view
282 -
download
0
description
Transcript of Mangngon Ngu Lap Trinh Java
![Page 1: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/1.jpg)
Ngày 20 tháng 10 năm 2010
![Page 2: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/2.jpg)
I.GIỚI THIỆU MẢNG: 1.Sự cần thiết của mảng:
2.Định nghĩa mảng:
3.Phân loại mảng:II.TẠO VÀ SỬ DỤNG MẢNG:
1.Khởi tạo mảng:
2.Gán giá trị cho các thành phần của mảng:
3.Truy xuất thành phần của mảng:
4.Lấy kích thước mảng:
5.Hiển thị mảng:
6.Ví dụ minh hoạ:
NỘI DUNG BÀI HỌC
Phần 1: Mảng
![Page 3: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/3.jpg)
NỘI DUNG BÀI HỌC(tiếp)
III.CÁC THAO TÁC TRÊN MẢNG:
1.Sao chép mảng:
2.Sao chép các phần tử của mảng:
3.Thêm, xoá phần tử của mảng:
4.Mở rộng mảng:
5.Các mảng của các đối tượng:
PHẦN 2.DANH SÁCH DẠNG MẢNG:
I.Sự cần thiết của ArrayList:
II.Lớp ArrayList:
III.Sử dụng danh sách mảng:
IV.Lớp Wrapper:
V. Đóng hộp tự động:
![Page 4: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/4.jpg)
07CTT2
(Array)
![Page 5: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/5.jpg)
07CTT2
I.GIỚI THIỆU MẢNG:
1.Sự cần thiết của mảng: Ví dụ: Bài toán tính tổng n số nguyên bất kỳ nhập vào từ bàn phím ?
Để giải quyết bài toán trên ta phải sử dụng 4 biến để lưu trữ các số nhập vào(giả sử x,y,z,t) tổng cần tính S = x + y + z + t; Với n = 100 hoặc lớn hơn nữa?
Cách trên vẫn giải quyết được. Nhưng có những hạn chế sau: - Tốn sức, tốn bộ nhớ cho việc định nghĩa và khởi tạo cho mỗi biến, các giá trị không được lưu liền kề nhau trong bộ nhớ.
- Giả sử với n = 4 (tức là ta tính tổng 4 số nguyên bất kỳ nhập từ bàn phím).
![Page 6: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/6.jpg)
07CTT2
Chính vì thế mảng ra đời nhằm khăc khắc phục những hạn chế trên.
Mảng là phương tiện tốt nhất để giải quyết các bài toán với tập hợp các phần tử dữ liệu có cùng kiểu tại cùng thời điểm.
2. Khái niệm mảng: - Mảng là tập hợp nhiều phần tử có cùng tên, cùng kiểu dữ liệu và mỗi phần tử trong mảng được truy xuất thông qua chỉ số của nó trong mảng. • Chỉ số của mảng: Mỗi thành phần của mảng có thể thông qua một giá trị nguyên được gọi là chỉ số của mảng.
- Trong Java chỉ số của mảng bắt đầu từ 0.• Kích thước mảng: Số lượng các phần tử của mảng.(kích thước mảng cố định)
I.GIỚI THIỆU MẢNG(2)
![Page 7: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/7.jpg)
07CTT2
3. Phân loại mảng:
- Mảng một chiều (học trong tiết này)
- Mảng đa chiều ( Mảng 2 chiều thường được dùng)
[0]
[1]
[2]
[3]
[0]
[0][1]
[1]
[2]
[2]
[3]
I.GIỚI THIỆU MẢNG(3)
Mảng trong Java có 2 kiểu:
![Page 8: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/8.jpg)
07CTT2
II.TẠO VÀ SỬ DỤNG MẢNG
1.Khởi tạo mảng: Cách 1:
cú pháp: ArrayType [] ArrayName;
hoặc ArrayType ArrayName [];
Trong đó • ArrayType: Kiểu dữ liệu của các thành phần chứa trong mảng. Kiểu dữ liệu của các phần tử mảng có thể là bất kỳ kiểu dữ liệu hợp lệ nào của Java (Kiểu nguyên thuỷ, kiểu tham chiếu)• ArrayName : tên của mảng.• [] chỉ định biến là biến mảng.
- Khai báo 1 biến mảng tham chiếu đến mảng
![Page 9: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/9.jpg)
07CTT2
-Tạo mảng:
Với khai báo trước thì mảng chưa thực sự tồn tại. Để máy tính cấp phát bộ nhớ cho các phần tử của mảng và gán mảng đến biến đã khai báo, ta dùng toán tử new ( Mảng trong Java là 1 đối tượng)
Ví dụ: khai báo mảng số nguyên:
int [] soNguyen; // Khai báo biến mảng.
soNguyen = new int [10]; // tạo mảng.
II.TẠO VÀ SỬ DỤNG MẢNG( 2)
Cú pháp: ArrayName = new ArrayType [ArraySize];
Trong đó ArraySize: Kích thước của mảng (Số phần tử của mảng)
![Page 10: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/10.jpg)
07CTT2
II.TẠO VÀ SỬ DỤNG MẢNG(3)
Cách 2: Bạn có thể kết hợp sự khai báo biến mảng và tạo mảng như sau:
Ví dụ: int soNguyen [] = new int[10]; //Khai báo mảng
2.Gán giá trị cho các thành phần của mảng: Sau khi khởi tạo mảng xong.Thì các thành phần của mảng được gán một giá trị mặc định.Tức là mỗi phần tử của mảng sẽ nhận giá trị:
Cú pháp: ArrayType [] ArrayName = new ArrayType [ArraySize]; hoặc ArrayTye ArrayName [] = new ArrayType [ArraySize];
0 : Kiểu dữ liệu(KDL) là kiểu số ‘\0’: KDL là ký tự. false: KDL là kiểu boolean null: KDL là kiểu tham chiếu tới đối tuợng
![Page 11: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/11.jpg)
07CTT2
Ta cần gán giá trị cụ thể cho các thành phần của mảng:
int [] soNguyen = new int[4]; // khai báo mảng
soNguyen[0] = 50;
soNguyen[1] = 24;
soNguyen[2] = 1;
soNguyen[3] = 10;
Ví dụ: gán giá trị cho mảng số nguyên
II.TẠO VÀ SỬ DỤNG MẢNG(4)
Lưu ý: Trong Java còn cho phép ta kết hợp cả khai báo và khởi gán các phần tử của mảng theo cách sau: ví dụ: int soNguyen [] = {50,24,1,10}; /* tạo ra một mảng gồm 5 phần tử của mảng, các phần tử lần lượt được gán giá trị là 50,24,1,10. */
![Page 12: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/12.jpg)
07CTT2
Gán giá trị cho các thành phần của mảng được nhập từ bàn phím:
int soNguyen [] = new int[4]; for (int i=0; i<4;i++){ System.out.print("Nhap SoNguyen["+i+"]"+"="); soNguyen[i] = s.nextInt();}
3.Truy xuất thành phần của mảng:
Cú pháp ArrayName[Index];
Lưu ý: Phần tử thứ n của mảng có chỉ số là (n-1)
II.TẠO VÀ SỬ DỤNG MẢNG(5)
![Page 13: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/13.jpg)
07CTT2
double data [] = new double [10];
data [2] = 29.95
4.Lấy kích thước mảng:
Cú pháp: ArrayName.length;
Ví dụ: soThuc.length ; // =10
II.TẠO VÀ SỬ DỤNG MẢNG(6)
ví dụ : Truy cập phần tử thứ 3 của mảng dưới.
![Page 14: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/14.jpg)
07CTT2
5.Hiển thị mảng:
II.TẠO VÀ SỬ DỤNG MẢNG(7)
Ví dụ: hiển thị mảng soNguyen gồm các phần tử nhập từ bàn phím
for( int i=0; i<soNguyen.length;i++) {
System.out.print(“ cac phan tu cua mang la:” +
” “+soNguyen[i]);} Vòng lặp for-each ( lặp “với mỗi”):
Ví dụ: hiển thị mảng trên dùng for – each
for ( int i : soNguyen) { //Giá trị mảng tại chỉ số hiện hành được hiển thị
System.out.print(“cac phan tu cua mang la:”+ i + ” “); }
cú pháp: for ( Type variable : arr) { statement; }
![Page 15: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/15.jpg)
07CTT2
II.TẠO VÀ SỬ DỤNG MẢNG(8)6.Ví dụ minh hoạ:
Ví dụ 1: Đếm xem trong mảng số nguyên có bao nhiêu phần tử là số chẵn?
![Page 16: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/16.jpg)
07CTT2
II.TẠO VÀ SỬ DỤNG MẢNG(9)
Kết quả chạy chương trình :
•Bài tập: - Tìm phần tử trong mảng có giá trị bằng x.
-Tìm giá trị lớn nhất (nhỏ nhất trong mảng).
![Page 17: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/17.jpg)
07CTT2
III.CÁC THAO TÁC TRÊN MẢNG:
1.Sao chép mảng:
• Java hỗ trợ 3 cách sao chép dữ liệu mảng
– Toán tử gán
– clone()
– System.arraycopy()
clone () : Sao chép mảng
double [] data = new double[10];
Mảng cần sao
chép
![Page 18: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/18.jpg)
07CTT2
III.CÁC THAO TÁC TRÊN MẢNG(1):
double [] prices = data;
double [] prices = (double[]) data.clone();
![Page 19: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/19.jpg)
07CTT2
III.CÁC THAO TÁC TRÊN MẢNG(2):
System.Arraycopy () : Dùng copy dữ liệu từ mảng này sang mảng khác.
System. arraycopy(from, fromStart, to, toStart, count);
![Page 20: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/20.jpg)
07CTT2
III.CÁC THAO TÁC TRÊN MẢNG(3):
2.Thêm – Xoá phần tử: Thêm phần thử vào mảng:
System. arraycopy(data, i, data, i+1, data.length -i-1); data [i] = x;
x là phần tử
thêm vào
![Page 21: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/21.jpg)
07CTT2
III.CÁC THAO TÁC TRÊN MẢNG(4):
Xoá phần tử khỏi mảng:
System. arraycopy(data, i+1, data, i, data.length-i-1);
![Page 22: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/22.jpg)
07CTT2
III.CÁC THAO TÁC TRÊN MẢNG(5):
3.Mở rộng mảng:
• Tạo mảng mới có kích thước lớn hơn.
double [] newData = new double [2 * data.length];
•Sao các phần tử cũ sang mảng mới.System. arraycopy(data,0,newdata,0,data.length);
• Lưu tham chiếu tới mảng:
data = newdata;
![Page 23: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/23.jpg)
07CTT2
III.CÁC THAO TÁC TRÊN MẢNG(6):
4. Đưa các mảng song song về mảng của các đối tượng:
• Mảng song song:
ví dụ: int [] accountNumbers;
double [] balances;
![Page 24: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/24.jpg)
07CTT2
• Mảng các đối tượng:
III.CÁC THAO TÁC TRÊN MẢNG(7):
Bankaccount []= accounts;
Lưu ý: Tránh dùng mảng song song. Mà nên đưa về mảng các đối tượng.
![Page 25: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/25.jpg)
07CTT2
III.CÁC THAO TÁC TRÊN MẢNG(8):
5. Mảng chưa điền kín dữ liệu:
• Khi dùng mảng kích thước khai báo thường lớn hơn kích thước thật.
Cần phải có biến để lưu vết kích thước hiện tại.
final int DATA_LENGTH = 100;double [] data = new double [DATA_LENGTH];int datasize = 0;data [] dataSize = x;dataSize + +;
![Page 26: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/26.jpg)
07CTT2
(ArrayList)
![Page 27: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/27.jpg)
07CTT2
????
Khi nào sử dụng ArrayList
![Page 28: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/28.jpg)
07CTT2
I.SỰ CẦN THIẾT CỦA ARRAYLIST:
Một bất lợi của việc dùng mảng là phải xác định trước số lượng phần tử trong mảng:
- Nếu khai báo kích thước mảng quá nhỏ thì sẽ dẫn đến thiếu bộ nhớ. - Nếu khai báo quá lớn thì lại lãng phí bộ nhớ.
ArrayList đã khắc phục được nhược điểm này (ArrayList là một kiểu mảng động).
Các phần tử trong mảng phải có cùng kiểu dữ liệu.
![Page 29: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/29.jpg)
07CTT2
Ví dụ1 : Chương trình quản lý nhân viên tại một phòng ban nào đó trong một công ty.
- Số lượng nhân viên trong phòng ban có thể thay đổi. kích thước không cố định.(không sử dụng mảng trong ví dụ này).Thay vào đó ta sẽ sử dụng ArrayList.
I.SỰ CẦN THIẾT CỦA ARRAYLIST(tiếp):
Ví dụ 2:Đoạn mã chương trình sau
ArrayList <Object> o = new Arraylist(Object); o. add(“hello”); o.add(7);
Các phần tử của ArrayList có kiểu chung là Object, nghĩa là có thể có các kiểu khác.
![Page 30: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/30.jpg)
07CTT2
• Đặc điểm của lớp ArrayList:
- Quản lý một dãy các đối tượng.
- Có thể tăng, giảm kích thước theo nhu cầu.
- Cung cấp các phương thức cho các thao tác thông thường: chèn, xoá phần tử,...
- Từ java 5.0 trở đi ArrayList là class generic
ArrayList <T> ; // Tập các đối tượng có kiểu T
II. LỚP ARRAYLIST:
- Các phần tử trong ArrayList có thể có kiểu khác nhau.
![Page 31: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/31.jpg)
07CTT2
Lớp ArrayList
Giao diện List
Giao diện collection
Lớp AbtractList
Gói Java.util
Chứa trong
Triển khai
Thi hànhTriển khai
II. LỚP ARRAYLIST(tiếp):
![Page 32: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/32.jpg)
07CTT2
1.Khai báo ArrayList:
ArrayList<TypeObject> referenceVariableName
= new ArrayList<TypeObject> (<int initialCapacity>);
Ví dụ: ArrayList<SinhVien> dssv = new ArrayList <SinhVien>();
// khai báo 1 danh sách mảng các objects sinhvien;
Cú pháp:
ArrayList<TypeObject> : Định kiểu cho danh sách ngay khi khai báo biến danh sách.
Trong đó:
initialCapacity : sức chứa của ArrayList (nếu dự đoán được có bao nhiêu thành phần được lưu trữ trong ArrayList).
III.SỬ DỤNG DANH SÁCH MẢNG(1):
![Page 33: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/33.jpg)
07CTT2
2.Các phương thức: Phương thức size();để lấy kích thước hiện thời của ArrayList
referenceVariableName. size();Cú pháp:
Phương thức get(); để lấy một phần tử trong ArrayList
Cú pháp:
referenceVariableName.get(int index);
Ví dụ: dssv.size();
Ví dụ: SinhVien s = dssv.get(1);
III.SỬ DỤNG DANH SÁCH MẢNG(2):
![Page 34: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/34.jpg)
07CTT2
Phương thức set(); ghi đè lên giá trị đã có;
referenceVariableName.set(int index, element);
/*đặt giá trị vào trong ArrayList ở index chỉ định, ghi đè nội dung(element) nếu có */
Ví dụ: dssv.set(1,mai);
Phương thức add();
referenceVariableName.add( element);
//thêm phần tử vào ArrayList;
Ví dụ: dssv.add (“Nguyễn Thị Hương Mai”,1979,”Quang Ninh”);
III.SỬ DỤNG DANH SÁCH MẢNG(3):
![Page 35: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/35.jpg)
07CTT2
Phương thức add(); chèn giá trị mới vào danh sách;
Phương thức remove(); xoá phần tử tại chỉ số nào đó;
referenceVariableName.add(int index , e); //chèn thêm một phần tử e vào vị trí index
referenceVariableName.remove(index);
lưu ý:index nằm giữa 0 và size()
III.SỬ DỤNG DANH SÁCH MẢNG(4):
![Page 36: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/36.jpg)
07CTT2
4. Hiển thị danh sách mảng:
Vòng lặp for-each ( lặp “với mỗi”):
for (sinhvien e : dssv) { System.out.println("name=" + e.getName( ) + ",Diem=" + e.getDiem( ); }
III.SỬ DỤNG DANH SÁCH MẢNG(5):
3. Nhập dữ liệu cho danh sách mảng:
ArrayList<String> dssv = new ArrayList<String>(); dssv. add(“hello”); dssv.add(“how are you”); dssv.add(0,”thanks”);
![Page 37: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/37.jpg)
07CTT2
III.SỬ DỤNG DANH SÁCH MẢNG(6):
6.Ví dụ:Chương trình quản lý điểm môn tin học của sinh viên
![Page 38: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/38.jpg)
07CTT2
III.SỬ DỤNG DANH SÁCH MẢNG(7):
![Page 39: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/39.jpg)
07CTT2
III.SỬ DỤNG DANH SÁCH MẢNG(8):
![Page 40: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/40.jpg)
07CTT2
III.SỬ DỤNG DANH SÁCH MẢNG(9):
Kết quả chạy chương trình:
![Page 41: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/41.jpg)
07CTT2
IV.LỚP WRAPPER(1):
• Một bất lợi của ArrayList là không thể không thể chèn kiểu dữ liệu nguyên thuỷ (các giá trị nguyên thuỷ không phải là đối tượng trong java).
Giải quyết
bọc kiểu nguyên thuỷ thành đối tượng (sử dụng lớp bao của chúng).
Ví dụ: không có ArrayList<int>...
• Tất cả các lớp Wrapper đều nằm trong gói java.lang(một gói chương trình tự động import)
• java.lang cung cấp các lớp bao cho từng kiểu dữ liệu nguyên thuỷ
![Page 42: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/42.jpg)
07CTT2
• Giá trị của kiểu Wrapper không thay đổi được
ví dụ: Interger i = new Integer (10);
IV.LỚP WRAPPER(2):
![Page 43: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/43.jpg)
07CTT2
• Ví dụ sử dụng lớp Wrapper
ArrayList <Integer> data = new ArrayList <Integer> (); data.add (29); int x = data.get (0);
IV.LỚP WRAPPER(3):
![Page 44: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/44.jpg)
07CTT2
V. ĐÓNG HỘP TỰ ĐỘNG (auto-boxing)
• Trước java 5 khi làm việc với ArrayList ta thường phải chuyển đổi giữa kiểu giữ liệu nguyên thuỷ và lớp bao của chúng.
Để khắc phục điều này từ java 5 trở đi đã hỗ trợ thao tác đóng hộp và mở hộp tự động.
• Auto-boxing của java 5 trở đi giúp ta làm việc với các kiểu đối tượng dễ dàng như làm việc với kiểu dữ liệu nguyên thuỷ tương ứng
Quá trình auto-boxing là quá trình tự động chuyển đổi kiểu dữ liệu nguyên thuỷ sang lớp bao của chúng.
![Page 45: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/45.jpg)
07CTT2
V. ĐÓNG HỘP TỰ ĐỘNG (2)
Quá trình mở hộp (unboxing) là quá trình ngược của auto-boxing.
ví dụ: double x = d ; /* tự động unboxing; giống như
double x = d.doubleValue ();*/
( trong đó typeValue( ) trả lại các giá trị nguyên thuỷ tương ứngvới các đối tượng nguyên thuỷ)
ví dụ: ArrayList <Integer> data = new ArrayList <Integer> (); data.add (29); // auto - boxing
![Page 46: Mangngon Ngu Lap Trinh Java](https://reader033.fdocument.pub/reader033/viewer/2022052311/557202d04979599169a41f2b/html5/thumbnails/46.jpg)
The creator of Java