2011-07-06 30 views
5

Các lớp trình bao bọc được sử dụng để "bọc" các kiểu dữ liệu nguyên thủy vào các đối tượng để chúng có thể được bao gồm trong các hoạt động được reseved cho các đối tượng. Chuỗi lớp kết thúc tốt các chuỗi ký tự vào một đối tượng.Chúng ta có thể gọi String là lớp bao bọc không?

Trong trường hợp này, chúng ta có thể gọi String là lớp trình bao bọc không?

+0

Tôi thích gọi chuỗi "Fred". Không, tôi sẽ không gọi đó là lớp bao bọc. Tôi không biết những gì nó cải thiện nếu tôi làm. – duffymo

+0

lớp trình bao bọc ngầm ám chỉ đến lớp trình bao bọc PRIMITIVE. vì vậy xem xét nó là định nghĩa ngầm định, String không phải là một lớp bao bọc. –

Trả lời

8

Theo wikipedia, một lớp bao bọc (nguyên thủy) trong Java là một trong tám lớp bọc một (= một) giá trị nguyên thủy. Stringkết thúc tốt đẹp a char[] vì vậy, theo đây là không phải là lớp trình bao bọc (nguyên thủy).

Hơn nữa, String không được thiết kế để quấn hoặc trang trí một mảng ký tự. String đã được thiết kế để mô hình chuỗi, chuỗi ký tự và triển khai hiện tại sử dụng một số nội bộ char[]. Nhưng Sun cũng có thể đã chọn sử dụng một mã số byte[] dài với một gợi ý mã hóa ký tự , một bộ sưu tập hoặc một cái gì đó có nguồn gốc. Điều đó không quan trọng.

Đó là khác nhau đối với những gói nguyên thủy: họ đã được thiết kế chỉ để bọc một nguyên thủy, để thích ứng một java nguyên thủy để java.lang.Object.

6

Không. Chuỗi không phải là lớp bao bọc, đơn giản vì không có loại nguyên thủy song song nào mà nó kết thúc tốt đẹp.

From wiki:

Một lớp wrapper nguyên thủy trong ngôn ngữ lập trình Java là một trong tám lớp được cung cấp trong gói java.lang để cung cấp các phương pháp đối tượng cho tám loại nguyên thủy

1

Một chuỗi là một biểu diễn của chuỗi char nhưng không nhất thiết phải là 'trình bao bọc'. Tự động và unboxing chẳng hạn không áp dụng cho Chuỗi. Nhưng chúng áp dụng cho các nguyên thủy như int dài, vv ..

0

Thông thường không vì nó không bọc một trong tám nguyên thủy, nhưng tôi không nghĩ nó sẽ bị tổn thương khi gọi nó như thế này.

1

Không, Chuỗi không bao bọc giá trị bằng chữ. Một chữ cho bạn một cách khác nhau để tạo ra một đối tượng String. Nhưng bản thân chữ là một đối tượng, vì vậy bạn có thể làm những việc như:

System.out.println("Hello world".toUpperCase()); 

Không phải bạn muốn làm điều này.

-2

Không, chúng tôi không thể gọi chuỗi dưới dạng lớp bao bọc. Bởi vì người mặt trời không có chuỗi trong lớp bao bọc.

+1

Câu trả lời đó có hữu ích không? nhìn thấy tất cả những người khác (và một người được chấp nhận) – manuell

Các vấn đề liên quan