The import statement is read and handled by the compiler, so there is no runtime issue if you use
import java.io.*;
or
import java.io.FileReader;
You can avoid name clashes if you explicitly use class names in import statements. Consider the case where 2 packages have a class called MyClass. If you import both packages with
import package1.*;
import package2.*;
and then try to declare
MyClass mC = new MyClass();
the complier cannot determine which package's version of MyClass it should use. If you just import the classes from the packages that you explicity require, then this problem goes away say,
import package1.MyClass;
import package2.OtherClass;
If you want to use MyClass from package1 and package2, you must use the full name of the class.
package1.MyClass mc1 = new package1.MyClass();
package2.MyClass mc2 = new package2.MyClass();