2009-10-30 35 views
7

Tôi chỉ muốn sản lượng hiện tại và tôi đã viếtSự khác nhau giữa nhập khẩu java.util. *; và nhập java.util.Date; ?

import java.util.*; 

ngay từ đầu, và

System.out.println(new Date()); 

trong phần chính.

Nhưng những gì tôi nhận được một cái gì đó như thế này:

[email protected] 

Khi tôi thay đổi việc nhập khẩu để import java.util.Date; mã hoạt động hoàn hảo, tại sao?

====================================

Vấn đề là, OK, tệp nguồn của tôi là "Date.java", đó là nguyên nhân.

Vâng, đó là tất cả lỗi của tôi, tôi nhầm lẫn mọi người xung quanh; P

Và cảm ơn tất cả mọi người bên dưới. Đó thực sự là NICE OF YOU;)

+1

Bạn có thể có các hàng nhập khác - hãy để chúng tôi xem một số mã có thể đồng bộ hiển thị số này – Mark

+1

Xem thêm: http://stackoverflow.com/questions/147454/why-is-using-a-wild-card-with-a- java-import-statement-bad, http://stackoverflow.com/questions/187453/import-package-vs-import-package-specifictype, http://stackoverflow.com/questions/585268/which-would-make- a-class-file-large-import-java-awt-hoặc-một-bó-hoặc-đơn-imp, http://stackoverflow.com/questions/1553909/is-there-any-difference-between-class- import-and-package-import-in-java – finnw

+1

Bỏ phiếu vì đôi khi một ví dụ phản tác dụng tốt là hữu ích như bất cứ điều gì. :) – mtruesdell

Trả lời

11

Bạn có thể có một số lớp "Ngày" khác được nhập ở đâu đó (hoặc bạn có một lớp Ngày trong gói bạn, không cần phải nhập). Với "import java.util. *" Bạn đang sử dụng ngày "other". Trong trường hợp này, tốt nhất nên chỉ định rõ ràng java.util.Date trong mã.

Hoặc tốt hơn, hãy cố tránh đặt tên cho lớp của bạn là "Ngày".

+0

bạn đã đúng, tôi đặt tên là src "Date.java" – EthanZ6174

+0

@ EthanZ6174: Không bao giờ làm điều đó một lần nữa ... –

+2

@ EthanZ6174: Xem Puzzle 7 trong danh sách mẫu này từ Java Puzzlers - http://www.javapuzzlers.com/java-puzzlers-sampler.pdf. đề nghị cho bất kỳ lập trình viên Java nào! –

2

Chương trình của bạn nên hoạt động chính xác như nhau bằng cách nhập nhập java.util. *; hoặc nhập java.util.Date;. Có phải là một cái gì đó khác bạn đã làm ở giữa.

+0

cảm ơn bạn đã trả lời câu hỏi và tôi biết không có sự khác biệt giữa câu hỏi đó, trừ khi tôi đặt tên là src "Date.java" ...: ( – EthanZ6174

3
import java.util.*; 

nhập mọi thứ trong java.util bao gồm lớp Ngày.

import java.util.Date; 

chỉ cần nhập lớp Ngày.

Thực hiện một trong hai cách này không thể tạo ra bất kỳ sự khác biệt nào.

0
but what I got is something like this: [email protected] 
while I change the import to: import java.util.Date; 
the code works perfectly, why? 

Bạn có ý nghĩa gì khi "hoạt động hoàn hảo"? Đầu ra của việc in một đối tượng Date giống nhau dù bạn nhập java.util. * Hay java.util.Date. Đầu ra mà bạn nhận được khi in các đối tượng là biểu diễn của đối tượng bằng phương thức toString() của lớp tương ứng.

+0

không, tôi đặt tên cho lớp là "Date.java" và đó là vấn đề .. – EthanZ6174

4

Việc triển khai toString()java.util.Date không phụ thuộc vào cách lớp được nhập. Nó luôn luôn trả về một ngày được định dạng đẹp.

toString() bạn thấy đến từ một lớp khác.

Nhập cụ thể được ưu tiên hơn nhập khẩu ký tự đại diện.

trong trường hợp này

import other.Date 
import java.util.* 

new Date(); 

đề cập đến other.Date và không java.util.Date.

Điều kỳ lạ là

import other.* 
import java.util.* 

nên cung cấp cho bạn được một lỗi biên dịch nói rằng các tham chiếu đến ngày dễ nhầm lẫn vì cả other.Datejava.util.Date trận đấu.

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