Just as a note, you probably don't want to use Date. Try Calendar instead.
The compiler is smart enough to only include what you use. It's more a matter of best practices than optimization. You're being explicit in what you use when you say java.util.Date instead of java.util.*. However, most of us break down and just use java.util.*.
The principle reason one would explicitly say which classes are being imported is because one of the packages you're importing might already have a Date class. Should you wish to say in your code Date foo = new Date() instead of java.util.Date foo = new java.util.Date(), you'll need to specify all the classes from the other package that are getting used, omitting the Date class.
For instance, say you wrote a package "myPackage", and created both a "Time" and "Date" class. You wanted to use the "Time" class, but the java.util.Date class in place of the custom one you wrote. What you should do is import myPackage.Time and java.util.Date. It would correct to say import java.util.*, and you'd still be using the java.util.Date class, but it might confuse someone coming in and looking at your code, as they might think you're using the myPackage.Date class instead.
Here are some links on the nitty gritty aspects of Java below the API level:
Java Language Specification
Java Virtual Machine Specifications
And while it's not on topic, I think you'll make use of this link:
Java Code Conventions