2011-10-09 66 views
9

Chính xác hơn, là một phần của lớp Integer (một phiên bản bị tước bỏ hoặc một cái gì đó) hoặc là nó hoàn toàn khác?Là int một đối tượng trong Java?

Tôi biết rằng int là một loại giá trị và Kiểu số nguyên là kiểu tham chiếu, nhưng không int kế thừa từ đối tượng?

(Tôi giả định rằng trong này int liên quan, dài, boolean vv đều tương tự int. Chỉ chọn để thuận tiện)

Trả lời

16
  • Các loại cơ bản trong Java không phải là đối tượng và không kế thừa từ đối tượng.

  • Vì Java 1.5 đã giới thiệu phép tự động cho phép giữa int và Integer (và các loại khác).

  • Bởi vì ints không Objects mà không thể được sử dụng như là các tham số kiểu chung chung ví dụ như các T trong list<T>

0

loại nguyên thủy không phải là đối tượng, nhưng được lưu trữ trực tiếp trong bất cứ bối cảnh họ đang cần . Nếu họ cần phải được đối xử như một đối tượng, họ có thể được đóng hộp trong một số nguyên.

+0

Vì vậy, bạn đang nói object = reference type? – soandos

+0

@soandos: có. Tất cả các cá thể lớp trong Java là các kiểu tham chiếu. – siride

1

Nếu bạn nói về Integer:

Lớp Integer bao bọc giá trị của kiểu nguyên thủy int trong một đối tượng. Một đối tượng kiểu Integer chứa một trường đơn có kiểu int. Ngoài ra, lớp này cung cấp một số phương thức để chuyển đổi một int thành một String và một String thành một int, cũng như các hằng số và phương thức khác hữu ích khi xử lý với một int.

int không phải là đối tượng, đó là kiểu nguyên thủy.

+0

Vì vậy, nó không kế thừa từ đối tượng? – soandos

+0

@soandos: nó kế thừa từ * không có gì *. Nó không thể kế thừa thời gian vì nguyên thủy không phải là kiểu tham chiếu. Điều này cũng tương tự như các kiểu đơn giản của C#. –

+0

Trong các cấu trúc ngôn ngữ khác có thể kế thừa nên thực tế là nó nguyên thủy là không đủ – soandos

16

Từ "Primitive Data Types": "loại nguyên thủy là các kiểu dữ liệu đặc biệt được xây dựng vào ngôn ngữ, họ là không phải đối tượng được tạo ra từ một lớp. " Điều đó, đến lượt nó, có nghĩa là không, int không kế thừa từ java.lang.Object theo bất kỳ cách nào vì chỉ "các đối tượng được tạo ra từ một lớp" làm điều đó. Hãy xem xét:

int x = 5; 

Để thứ được đặt tên là x để kế thừa từ đối tượng, thứ đó cần phải có loại. Lưu ý rằng tôi đang phân biệt giữa chính mình là x và thứ mà nó đặt tên. x có một loại, là int, nhưng thứ có tên là x là giá trị 5, không có loại nào và trong chính nó. Nó không là gì ngoài một chuỗi các bit đại diện cho giá trị tích phân "5". Ngược lại, xem xét:

java.lang.Number y = new java.lang.Integer(5); 

Trong trường hợp này, y có Số loại, và điều tên y có kiểu Integer. Điều có tên là y là một đối tượng. Nó có một loại riêng biệt không phân biệt y hoặc bất cứ thứ gì khác.

+1

+1 vì làm phiền để tìm một tài liệu tham khảo – mikek3332002

+0

Tôi nghi ngờ - một phương thức có kiểu trả về là một 'đối tượng', thực sự trả về' int'? Nếu có, thì làm thế nào tôi có thể lấy lại 'int' từ' Object' trong môi trường gọi? –

+0

@KaranChadha Bạn nên đăng câu hỏi này dưới dạng câu hỏi mới thay vì nhận xét. Hãy chắc chắn để kiểm tra xung quanh để xem nếu cùng một câu hỏi đã được yêu cầu trước, mặc dù. –

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