Không, không có sự khác biệt ở tất cả.
Theo The Java Virtual Machine Specifications, Second Edition, Chapter 5: Loading, Linking and Initializing nói như sau:
Các máy ảo Java động tải (§2.17.2), liên kết (§2.17.3), và khởi (§2.17.4) các lớp học và các giao diện . Đang tải là quá trình tìm biểu diễn nhị phân của loại hoặc loại giao diện có tên riêng là và tạo một lớp hoặc giao diện từ biểu thức nhị phân đó . Liên kết là quá trình khi tham gia lớp học hoặc giao diện và kết hợp nó vào trạng thái thời gian chạy là máy ảo Java sao cho nó có thể được thực thi.
Tại thời điểm biên dịch, không có liên kết lớp học, do đó, sử dụng ký tự đại diện cho import
ing không có sự khác biệt. Các lớp khác không được gộp chung vào tệp class
kết quả.
Trong thực tế, nếu bạn nhìn vào bytecode của tập tin class
(thông qua javap
hoặc disassembler như vậy), bạn sẽ không tìm thấy bất kỳ import
báo cáo, vì vậy có nhiều hoặc số ít import
báo cáo trong mã nguồn của bạn sẽ không ảnh hưởng đến kích thước của tệp class
.
Đây là một thử nghiệm đơn giản: Thử viết chương trình và biên dịch với import
s bằng ký tự đại diện và một số khác có nhập khẩu rõ ràng. Tệp class
kết quả phải có cùng kích thước.
Sử dụng rõ ràng import
báo cáo về các lớp học cụ thể có lẽ ít có thể đọc được (và phiền hà, nếu người ta không sử dụng một IDE như Eclipse mà sẽ viết nó cho bạn), nhưng sẽ cho phép bạn để đối phó với sự chồng chéo của lớp tên trong hai gói.
Ví dụ: có một lớp List
trong cả hai gói java.util
và java.awt
. Bằng cách nhập cả gói, sẽ có một cuộc xung đột cho các lớp có tên List
:
import java.util.*;
import java.awt.*;
// ... snip ... //
List l; // which "List" are we talking about?
bởi chỉ nhập khẩu các lớp cụ thể mà bạn cần, những xung đột có thể phần nào tránh được:
import java.util.Hashmap;
import java.awt.List;
// .. snip ... //
List l; // Now we know for sure it's java.awt.List
Tất nhiên, nếu bạn phải sử dụng cả hai số java.util.List
và java.awt.List
thì bạn sẽ không may mắn; bạn sẽ cần sử dụng một cách rõ ràng tên lớp học đầy đủ của họ.
Thao tác này sẽ giúp nhiều người chuyển từ C/C++ sang Java. –