Java Bài 36: Lớp Wrapper

Chúng tôi rất vui mừng được chia sẻ kiến thức sâu sắc về từ khóa Wrapper class la gi và hi vọng rằng nó sẽ hữu ích cho các bạn đọc. Bài viết tập trung trình bày ý nghĩa, vai trò và ứng dụng của từ khóa trong việc tối ưu hóa nội dung trang web và chiến dịch tiếp thị trực tuyến. Chúng tôi cung cấp các phương pháp tìm kiếm, phân tích và chọn lọc từ khóa phù hợp, kèm theo các chiến lược và công cụ hữu ích. Hi vọng rằng thông tin chúng tôi chia sẻ sẽ giúp bạn xây dựng chiến lược thành công và thu hút lưu lượng người dùng. Cảm ơn sự quan tâm và hãy tiếp tục theo dõi blog của chúng tôi để cập nhật kiến thức mới nhất.

Chào mừng các bạn đã đi vào với bài học kinh nghiệm Java số 36, bài học kinh nghiệm về lớp Wrapper. Đây là bài học kinh nghiệm trong chuỗi bài về lập trình tiếng nói Java của Yellow Code Books.

Bạn Đang Xem: Java Bài 36: Lớp Wrapper

Bài học kinh nghiệm hôm nay đưa tất cả chúng ta ngược về quá khứ, để bổ sung thêm tri thức còn tương đối “mộc mạc” ở một bài học kinh nghiệm khi đó. Quá khứ ở đây là lúc mà tất cả chúng ta còn đang làm quen với những kiểu tài liệu nguyên thủy của Java. Lúc bấy giờ bạn đã biết Java có 8 kiểu nguyên thủy, chúng gồm có int, short, long, byte, float, double, charboolean. Bạn cũng có thể xem lại toàn bộ bài học kinh nghiệm số 4 để biết rõ thông tin về các kiểu tài liệu này.

Hôm nay các bạn sẽ được làm quen với những lớp mang tên là Wrapper. Để xem những lớp này giúp bổ sung gì cho những kiểu tài liệu nguyên thủy vừa mới được liệt kê trên đây nhé.

Lớp Wrapper thực chất chỉ là một chiếc tên chung cho rất nhiều lớp khác nhau. Vì tất cả những lớp thuộc bài hôm nay có cùng một hiệu suất, nên mới gọi chung một chiếc tên Wrapper như vậy.

Và bởi như mình có nói, Java có 8 kiểu tài liệu nguyên thủy, nên cũng sẽ có được 8 lớp Wrapper cho từng kiểu nguyên thủy này. Chúng gồm có.

– Lớp Byte là lớp Wrapper cho kiểu tài liệu byte. – Lớp Short là lớp Wrapper cho kiểu tài liệu short. – Lớp Integer là lớp Wrapper cho kiểu tài liệu int. – Lớp Long là lớp Wrapper cho kiểu tài liệu long. – Lớp Float là lớp Wrapper cho kiểu tài liệu float. – Lớp Double là lớp Wrapper cho kiểu tài liệu double. – Lớp Character là lớp Wrapper cho kiểu tài liệu char. – Lớp Boolean là lớp Wrapper cho kiểu tài liệu boolean.

Như vậy chúng ta có thể thấy, mỗi lớp Wrapper cho từng kiểu tài liệu nguyên thủy sẽ là một đối tượng người sử dụng bao lấy kiểu nguyên thủy mà nó tương trợ. Hay nói cách khác, mỗi lớp Wrapper sẽ chứa một kiểu nguyên thủy bên trong nó. Và, lớp Wrapper giúp xây dựng ra những phương thức khác nhằm bổ sung thêm vào cho hiệu suất đơn giản ban sơ của kiểu nguyên thủy.

Có một điều chúng ta có thể ghi nhớ là, giống như với tri thức về Chuỗi mà bạn đã biết, các lớp Wrapper cũng là các lớp có mức giá trị không thể thay đổi được, tiếng Anh gọi là Immutable. Bạn cũng có thể xem thêm một tí tri thức về Immutable ở bài này. Thêm nữa, các lớp Wrapper là các lớp final, và vì vậy bạn không thể nào tạo được lớp con của chúng.

Trước tiên, điều cơ bản nhất cho chuyện này là, các lớp Wrapper sẽ giúp tất cả chúng ta chuyển đổi qua lại giữa một kiểu tài liệu nguyên thủy sang kiểu tài liệu đối tượng người sử dụng và trái lại.

Bạn cũng có thể xem ví dụ cho việc sử dụng kiểu tài liệu nguyên thủy và kiểu Wrapper của nó như sau.

int a = 20; // a là biến có kiểu tài liệu int nguyên thủy Integer i = Integer.valueOf(a); // i là biến có kiểu tài liệu đối tượng người sử dụng Integer, được tạo ra từ biến nguyên thủy a

Bạn cũng có thể thấy, biến a là kiểu int, còn biến i là kiểu Integer.

Xem Thêm : Những lợi ích khi sử thẻ tín dụng Vietcombank

Ý tiếp theo cho thắc mắc vì sao này là, nếu với những kiểu tài liệu nguyên thủy, bạn chỉ có một chọn lựa là tạo ra biến rồi sử dụng giá trị của nó (nếu như khách hàng không gán giá trị thì nó vẫn được tạo một giá trị mặc định, chúng ta có thể xem lại ở bài các kiểu tài liệu nguyên thủy). Còn với những kiểu đối tượng người sử dụng, giá trị mặc định của nó là null, giá trị null này còn có thể được tận dụng trong một số trường hợp, như mang ý nghĩa chưa xuất hiện giá trị chẳng hạn. Ngoài ra, các kiểu đối tượng người sử dụng còn mang theo nó nhiều phương thức hữu dụng, làm phong phú hơn tính ứng dụng của kiểu tài liệu.

Thêm nữa, một số cấu trúc khác bên trong tiếng nói Java, như các cấu trúc về các list mà tất cả chúng ta sẽ làm quen sau như ArrayList hay Vector đều chứa đựng các tập hợp kiểu tài liệu đối tượng người sử dụng thay vì kiểu nguyên thủy, nên việc biết và vận dụng các lớp Wrapper là một bắt buộc.

Ngoài ra thì kiểu tài liệu đối tượng người sử dụng sẽ thích hợp hơn trong việc thực thi đa luồng (multithreading) và đồng bộ hóa (synchronization) mà tất cả chúng ta sẽ cùng thảo luận ở nội dung bài viết khác.

Chuyển Đổi Kiểu Nguyên Thủy Sang Kiểu Wrapper

Việc chuyển đổi một kiểu nguyên thủy sang kiểu Wrapper của nó người ta gọi là Boxing. Không phải mang ý tức là môn đấm bốc đâu. Boxing ở đây mang ý tức là đóng hộp, tức là đóng tài liệu nguyên thủy vào trong cái hộp Wrapper của nó đấy. Như ví dụ mà bạn xem trên kia, khi một kiểu int a được chuyển thành kiểu Integer i.

Bạn cũng có thể thực hiện việc boxing thông qua các phương thức khởi tạo của rất nhiều lớp Wrapper.

Hoặc có thể gán trực tiếp các giá trị nguyên thủy vào cho những lớp Wrapper, cách này người ta còn gọi là Autoboxing, có tức là khối hệ thống sẽ chuyển đổi một cách tự động hóa.

Chuyển Đổi Kiểu Wrapper Sang Kiểu Nguyên Thủy

Trái lại với trên kia, khi chúng ta chuyển từ một kiểu Wrapper sang kiểu nguyên thủy của nó người ta gọi là Unboxing, có tức là mở hộp, tức là mở cái hộp Wrapper để lấy tài liệu nguyên thủy ra.

Bạn cũng có thể thực hiện việc unboxing thông qua các phương thức xxxValue(). Với xxx là thay mặt cho từng loại tài liệu, như với ví dụ sau.

Cũng tương tự như autoboxing, kỹ thuật unboxing cũng luôn có thể được viết như vậy này.

Như trên kia mình có nói là các lớp Wrapper giúp tạo thêm cho những kiểu tài liệu nguyên thủy vốn chỉ có tác dụng chứa đựng tài liệu, trở thành một đối tượng người sử dụng với nhiều phương thức hữu dụng hơn. Sau đây mình sẽ liệt kê các phương thức hữu dụng của chúng để bạn tham khảo nhé.

parseXxx()

Thông số truyền vào cho phương thức static này là một chuỗi, kết quả nhận được là một giá trị nguyên thủy tương ứng với chuỗi truyền vào.

Chắc bạn cũng đoán được kết quả in ra console của dòng code trên đây rồi đúng không nào nào.

toString()

Khác với toString() của lớp Object, toString() lần này của rất nhiều lớp Wrapper là phương thức static, nó có một giá trị truyền vào là kiểu tài liệu nguyên thủy tương ứng với lớp Wrapper đó, và kết quả trả về là một chuỗi tương ứng với giá trị truyền vào. Ví dụ này thử nghiệm với lớp Integer, các lớp Wrapper khác cũng sẽ tương tự.

Xem Thêm : Chuẩn UEFI, Legacy là gì? Sự khác nhau giữa UEFI, Legacy, BIOS

Kết quả in ra console là chuỗi “10”.

xxxValue()

Bạn đã làm quen với phương thức này ở trên kia. Cụ thể thì những phương thức dạng này giúp chuyển đổi một giá trị của lớp Wrapper nào đó về kiểu tài liệu nguyên thủy (unboxing). Thỉnh thoảng phương thức này còn hỗ trợ chuyển đổi kiểu tài liệu như khi chúng ta ép kiểu tường minh một giá trị vậy. Bạn cũng có thể dễ hiểu hơn khi xem ví dụ sau.

Kết quả in ra console tuần tự là 50.5, 5050.

compareTo()

Nếu khách hàng còn nhớ, ở bài học kinh nghiệm về chuỗi tất cả chúng ta đã và đang nói qua phương thức compareTo() dùng làm so sánh các giá trị chuỗi với nhau. Vậy thì khi đối chiếu với các lớp Wrapper mà tất cả chúng ta làm quen hôm nay, thì hiệu suất của nó vẫn được vận dụng trọn vẹn. Tức là phương thức này sẽ tiến hành dùng làm so sánh hai giá trị của hai lớp Wrapper (có cùng kiểu tài liệu) với nhau.

Cụ thể, với việc bạn gọi lopWrapper1.compareTo(lopWrapper2), thì kết quả sẽ như sau.

– Nếu kết quả của phương thức trả về một số âm, thì lopWrapper1 sẽ có mức giá trị nhỏ hơn lopWrapper2. – Nếu kết quả của phương thức trả về số 0, thì lopWrapper1 sẽ có mức giá trị bằng với lopWrapper2. – Nếu kết quả của phương thức trả về một số dương, thì lopWrapper1 sẽ có mức giá trị to ra hơn lopWrapper2.

Bạn cũng có thể xem ví dụ sau để làm rõ hơn.

Kết quả in ra console sẽ là.

compare()

Phương thức này còn có công dụng và cách sử dụng giống giống với compareTo() trên kia. Khác ở vị trí đây là phương thức static của mỗi lớp Wrapper, nên chúng ta có thể gọi trực tiếp từ lớp. Song song thông số truyền vào là hai giá trị của hai lớp Wrapper. Kết quả trả về của compare() cũng mang một trong ba giá trị (âm, 0, dương) như với compareTo() trên đây.

Kết quả in ra console là.

equals()

Tương tự như equals() khi so sánh chuỗi. Phương thức này sẽ so sánh các giá trị của rất nhiều lớp Wrapper và trả về một kiểu boollean, với true là bằng nhau và false là khác nhau. Như ví dụ sau.

Kết quả in ra console là.

Như vậy qua bài hôm nay, bạn đã biết được những kiểu tài liệu nguyên thủy trong Java đã được tiếng nói này “bảo phủ” bởi các lớp Wrapper, để làm cho chúng trở thành đa dạng và tiện dụng hơn ra làm sao rồi đúng không nào.

Bài Kế Tiếp

Tất cả chúng ta sẽ nói đến tri thức mang tên là Biệt lệ. Các các bạn sẽ được trang bị những cách thức để trở thành các Chuyên Viên “bắt lỗi” trong Java, mà bất kỳ một lập trình viên Java nào thì cũng buộc phải ghi nhận.

You May Also Like

About the Author: v1000