Autoboxing và unboxing trong java là gì năm 2024
Autoboxing is the automatic conversion that the Java compiler makes between the primitive types and their corresponding object wrapper classes. For example, converting an int to an Integer, a double to a Double, and so on. If the conversion goes the other way, this is called unboxing. Here is the simplest example of autoboxing: The rest of the examples in this section use generics. If you are not yet familiar with the syntax of generics, see the Generics (Updated) lesson. Consider the following code: List List
Consider the following method: public static int sumEven(List Because the remainder (%) and unary plus (+=) operators do not apply to Integer objects, you may wonder why the Java compiler compiles the method without issuing any errors. The compiler does not generate an error because it invokes the intValue method to convert an Integer to an int at runtime: public static int sumEven(List Converting an object of a wrapper type (Integer) to its corresponding primitive (int) value is called unboxing. The Java compiler applies unboxing when an object of a wrapper class is:
The import java.util.ArrayList; import java.util.List; public class Unboxing { }The program prints the following: absolute value of -8 = 8 pi = 3.1416 Autoboxing and unboxing lets developers write cleaner code, making it easier to read. The following table lists the primitive types and their corresponding wrapper classes, which are used by the Java compiler for autoboxing and unboxing: Phân biệt điểm khác nhau giữa Wrapper Class và Autoboxing trong JAVA. Điểm ít dân lập trình chú ý và thường rất hay nhầm lẫn trong quá trình sử dụng. Wrapper Class và AutoboxingChắc chắn rất nhiều bạn lập trình viên JAVA sử dụng hai định nghĩa “Wrapper Class và Autoboxing”. Chúng tôi cam đoan khá nhiều bạn nhầm lẫn giữa chúng. Trung Tâm sẽ đưa ra điểm khác biệt giữa chúng khiến các bạn nhớ mãi không quên. Wrapper Class và Autoboxing – Cùng Nhau Lập Trình JAVA.Autoboxing Trong JAVA là gì:
Wrappper Class là những Class JAVA định nghĩa ra tương ứng với những kiểu dữ liệu cơ bản. Để hiểu chi tiết hơn với những lý thuyết trên chúng ta sẽ đi vào thực hành chi tiết. Trung Tâm sẽ quay video màn hình cho các bạn lập trình dễ nhìn và biết cách làm như thế nào. Trong các phiên bản bên dưới JDK 1.5 , không dễ để chuyển đổi các kiểu dữ liệu nguyên thủy như
0,
1, sang các lớp trình bao bọc của chúng là Integer, Character, Float, Double. Bắt đầu với JDK 5, chức năng này, chuyển đổi các kiểu nguyên thủy thành các đối tượng tương đương, được triển khai tự động. Thuộc tính này được gọi là Autoboxing . Quá trình ngược lại tương ứng là Unboxing , tức là. quá trình chuyển đổi các đối tượng thành các kiểu nguyên thủy tương ứng của chúng. Mã mẫu cho autoboxing và unboxing được đưa ra dưới đây: Autoboxing
2
3
Mở hộp
Khi nào việc đóng gói và giải nén tự động được sử dụng? Autoboxing được trình biên dịch Java sử dụng trong các điều kiện sau:
Hãy xem xét ví dụ sau: Liệt kê 1: Mã đơn giản hiển thị hộp thư tự động
Trước jdk 1.5, đoạn mã trên có thể đã gây ra lỗi biên dịch vì toán tử còn lại % và dấu cộng += đơn phân không thể được áp dụng cho lớp trình bao bọc. Nhưng trong jdk 1.5 trở lên, mã này biên dịch không có lỗi, chuyển đổi Integer thành
0. Việc bỏ hộp được trình biên dịch Java sử dụng theo các điều kiện sau:
Hãy xem xét ví dụ sau: Liệt kê 2: Mã đơn giản hiển thị việc mở hộp
Tính năng tự động đóng hộp và mở hộp cho phép nhà phát triển viết mã dễ đọc và dễ hiểu. Bảng sau đây hiển thị các kiểu dữ liệu nguyên thủy và các đối tượng bao bọc tương ứng của chúng. Các loại nguyên thủy Lớp vỏ boolean Boolean byte Byte ký tự Tính cách trôi nổi Trôi nổi int số nguyên dài Dài ngắn Ngắn Bảng 1: Các kiểu nguyên thủy và các lớp bao bọc tương đương với các toán tử so sánh Tính năng tự động đóng hộp và mở hộp có thể được sử dụng với các toán tử so sánh. Đoạn mã sau minh họa cách điều này xảy ra: Liệt kê 3: Mã mẫu hiển thị tính năng tự động đóng hộp và mở hộp bằng toán tử so sánh
Tự động đóng gói và giải nén khi nạp chồng một phương thức Tự động đóng gói và giải nén được thực hiện khi nạp chồng một phương thức dựa trên các quy tắc sau:
Liệt kê 4: Mã mẫu cho thấy lợi ích của việc nạp chồng
Đầu ra chương trình - loại
0
Liệt kê 5: Mã mẫu cho thấy lợi ích của việc nạp chồng
Liệt kê 6: Mã mẫu cho thấy lợi ích của việc nạp chồng
Bạn nên ghi nhớ những điều sau khi sử dụng Tự động đóng gói: Như chúng ta biết, mọi tính năng tốt đều có nhược điểm. Bao bì ô tô cũng không ngoại lệ về vấn đề này. Một số lưu ý quan trọng mà nhà phát triển cần lưu ý khi sử dụng tính năng này:
Liệt kê 7: Mã mẫu hiển thị sự so sánh.
Nhược điểm của AutoBoxing Mặc dù AutoBoxing có một số ưu điểm nhưng nó có những nhược điểm sau: Liệt kê 8: Mã mẫu hiển thị vấn đề về hiệu suất.
Trong phần mã này,
0 nó sẽ được mở rộng thành
1. Bắt đầu với toán tử '
2', JVM bắt đầu mở hộp vì
2toán tử '' không thể áp dụng cho đối tượng Integer. Và sau đó kết quả được tự động đóng gói lại. Trước JDK 1.5, các kiểu dữ liệu
0và Số nguyên khác nhau. Trong trường hợp nạp chồng phương thức, hai loại này được sử dụng mà không gặp vấn đề gì. Với sự ra đời của tính năng đóng/mở gói tự động, việc này đã trở nên khó khăn hơn. Một ví dụ về điều này là phương thức nạp chồng
5trong
6. Lớp này
6có hai phương thức xóa -
8và
9. Trong trường hợp này, việc nạp chồng phương thức sẽ không xảy ra và phương thức tương ứng sẽ được gọi với các tham số thích hợp. Phần kết luậnAutoboxing là một cơ chế để chuyển đổi ngầm các kiểu dữ liệu nguyên thủy thành các lớp (đối tượng) trình bao bọc tương ứng. Trình biên dịch sử dụng phương thức này
9để chuyển đổi các kiểu nguyên thủy thành các đối tượng và các phương thức
1,
2v.v., để thu được các kiểu nguyên thủy của đối tượng. Autoboxing chuyển đổi kiểu boolean
3thành Boolean,
4Byte,
1Character,
2Float,
0Integer,
8Long,
9Short. Việc giải nén xảy ra theo hướng ngược lại. Bài báo gốc |