Mảng được triển khai dưới dạng đối tượng trong java phải không? Nếu vậy, tôi có thể xem mã nguồn cho lớp mảng ở đâu. Tôi tự hỏi nếu biến chiều dài trong mảng được định nghĩa là một hằng số và nếu vậy tại sao nó không phải là tất cả các chữ cái viết hoa LENGTH để làm cho mã dễ hiểu hơn.Các mảng được triển khai trong java như thế nào?
Trả lời
Mặc dù mảng là Đối tượng theo nghĩa là chúng kế thừa java.lang.Object, các lớp được tạo động như một tính năng đặc biệt của ngôn ngữ. Chúng không được định nghĩa trong mã nguồn.
Cân nhắc mảng này:
MySpecialCustomObject[] array;
Không có mã nguồn cho điều đó. Bạn đã tạo mã đó theo kiểu động.
Lý do tại sao độ dài nằm trong trường hợp thấp hơn và một trường thực sự là thực tế là các tiêu chuẩn mã hóa Java sau này không tồn tại tại thời điểm được phát triển. Nếu một mảng đã được phát triển ngày hôm nay, nó có lẽ sẽ là một phương thức: getLength().
Độ dài là trường cuối cùng được xác định tại cấu trúc đối tượng, nó không phải là hằng số, vì vậy một số tiêu chuẩn mã hóa sẽ không muốn ở dạng chữ hoa. Tuy nhiên nói chung trong Java ngày nay tất cả mọi thứ thường được thực hiện như là một hằng số trong trường hợp trên hoặc đánh dấu riêng tư với một phương thức getter công cộng, ngay cả khi nó là cuối cùng.
phác thảo chung cho một lớp mảng được tạo ra là gì? – AFK
@ sn3twork, Về cơ bản mảng có tất cả các phương thức của đối tượng, cộng với biến công khai cuối cùng và nó có phương thức sao chép công khai, triển khai Cloneable và Serializable (nhưng tôi giả định vì lý do kế thừa không lặp lại được). Chi tiết có trong JLS: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html – Yishai
nhờ liên kết http://java.sun.com/docs/books/ jls/second_edition/html/arrays.doc.html # 11358 Tôi tìm thấy nơi nó nói về việc xác định các mảng bằng cách sử dụng các bộ khởi tạo mảng và các biểu thức sáng tạo – AFK
Có thể nói rằng Mảng là một vùng chứa chứa độ dài cố định của dữ liệu của loại dữ liệu đơn lẻ. ví dụ:
int[] MyArray = new int[101]; // allocates memory for 101 integers, Range from 0 to 100.
và đa chiều
String[][] names = {{"FirstName", "LastName"},{"Kaji", "Islam"},...};
và cho mảng nhân vật
char[] ch={'a','b'....};
- 1. Các mảng được triển khai trong Perl như thế nào?
- 2. Các khối try/catch được triển khai như thế nào?
- 3. Các ứng dụng Java được triển khai như thế nào trong "thế giới thực"?
- 4. OpenID được triển khai như thế nào?
- 5. Các tham chiếu yếu được triển khai như thế nào?
- 6. HttpSession được triển khai như thế nào?
- 7. Các mutex được triển khai như thế nào?
- 8. IO không chặn được triển khai như thế nào?
- 9. Chuỗi string.find được triển khai như thế nào trong CPython?
- 10. C# Generics được triển khai như thế nào?
- 11. Giá trị() được triển khai như thế nào cho Java 6 enums?
- 12. Việc triển khai các ứng dụng .NET so với việc triển khai các ứng dụng web Java như thế nào?
- 13. Từ khóa java được đồng bộ hóa được triển khai như thế nào?
- 14. Giao diện java được triển khai bên trong như thế nào? (vtables?)
- 15. Máy tính Google được triển khai như thế nào?
- 16. Atan2 được triển khai bằng .NET như thế nào?
- 17. Các cụm từ thông dụng được triển khai như thế nào trong .NET?
- 18. Bản đồ băm JavaScript được triển khai như thế nào?
- 19. Facebook Chat Heads được triển khai như thế nào?
- 20. Thuộc tính phụ thuộc được triển khai như thế nào?
- 21. Phạm vi Lexical được triển khai như thế nào?
- 22. Arrays.sort (Object [] a) - được triển khai như thế nào?
- 23. Cách siêu được triển khai trong Java?
- 24. GMail triển khai Comet như thế nào?
- 25. GetHashCode() được triển khai cho Int32 như thế nào?
- 26. LLVM isa <> được triển khai như thế nào?
- 27. Các mảng được truyền như thế nào?
- 28. Phương thức String # intern() của Java được triển khai như thế nào?
- 29. Bảng băm được triển khai nội bộ bằng các ngôn ngữ phổ biến như thế nào?
- 30. Java: bản đồ đa luồng: các so sánh triển khai như thế nào?
Nếu nó là một hằng số (như trong một lĩnh vực thức tĩnh), tất cả các mảng sẽ phải có cùng kích thước (hoặc các mảng có kích thước khác nhau sẽ phải có các loại khác nhau (điều này sẽ hàm ý thêm rằng kích thước của một mảng sẽ phải được biết tại thời gian biên dịch)). – sepp2k
Từ những gì tôi hiểu từ câu trả lời của Yishai dưới đây là mảng được tạo động khi nó được xác định. – AFK
Điểm của sepp2k là không có một trường độ dài toàn cầu. Nói chung, chúng tôi nghĩ rằng các biến trường hợp trên là tĩnh công cộng và cuối cùng. Chiều dài ở đây là công khai và cuối cùng, nhưng không tĩnh và giá trị của nó là khác nhau đối với mỗi cá thể đối tượng, mặc dù nó không bao giờ thay đổi. – Yishai