2009-10-30 49 views
7

我只是想輸出電流,並在我的主要部分寫道import java.util。*;有什麼區別?並導入java.util.Date; ?

import java.util.*; 

在開頭,

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

但我得到的是這樣的:

[email protected] 

當我改變了進口import java.util.Date;代碼完美的作品,爲什麼呢?

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

的問題是,OK,我的源文件是「Date.java」,這是原因。

嗯,這是我的錯,我周圍的每個人都感到困惑,P

並感謝大家在下面。這真的是你的;)

+1

你可以有其他進口 - 讓我們看看一些可編譯的代碼,顯示這 – Mark 2009-10-30 12:14:58

+1

另請參見: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-greater-import-java-awt-a-bunch-or-single-imp,http://stackoverflow.com/questions/1553909/is-there-any-difference-between-class- import-and-package-imports-in-java – finnw 2009-10-30 12:28:17

+1

投票,因爲有時候一個好的反例就像任何事情一樣有幫助。 :) – mtruesdell 2009-10-30 12:55:56

回答

11

您可能在某處導入了其他一些「Date」類(或者您包中有一個Date類,不需要導入)。使用「import java.util。*」您正在使用「其他」日期。在這種情況下,最好在代碼中明確指定java.util.Date。

或者更好,儘量避免命名你的類「日期」。

+0

你說得對,我把我的src命名爲「Date.java」 – EthanZ6174 2009-10-30 12:23:04

+0

@ EthanZ6174:對你有好處!再也不要這樣做了...... – 2009-10-30 12:24:54

+2

@ EthanZ6174:請參閱本示例列表中的Puzzle 7,來自Java Puzzlers - http://www.javapuzzlers.com/java-puzzlers-sampler.pdf。這本書是一個確定的推薦給任何Java程序員! – 2009-10-30 12:38:12

2

你的程序應該可以和一樣工作import java.util。*;import java.util.Date;。中間必須有別的東西。

+0

謝謝你回答這個問題,我知道這些之間沒有區別,除非我把src命名爲「Date.java」...... :( – EthanZ6174 2009-10-30 12:24:43

3
import java.util.*; 

導入java.util中的所有東西,包括Date類。

import java.util.Date; 

只是導入Date類。

做這些都沒有什麼區別。

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? 

你是什麼意思「完美地工作」?無論您是否導入java.util。*或java.util.Date,打印Date對象的輸出都是相同的。打印對象時得到的輸出是相應類的toString()方法表示對象。

+0

nope,我將類命名爲「Date.java」,這就是問題所在。 – EthanZ6174 2009-10-30 12:31:53

4

toString()java.util.Date的實現不依賴於類的導入方式。它總是返回一個不錯的格式化日期。你看到的toString()來自另一個班級。

具體導入優先於通配符導入。

在這種情況下

import other.Date 
import java.util.* 

new Date(); 

other.Date而不是java.util.Date

奇怪的是,

import other.* 
import java.util.* 

應該給你一個編譯器錯誤,指出參考日期是模糊的,因爲這兩個other.Datejava.util.Date匹配。

相關問題