C++ import directives (not statements!) are not the same as Java import directives.
C++ import directives pull in type libraries. Java import directives identify textual
aliases for fully-qualified class names.
C/C++ #include statements can, and often do, contain further nested
#includes, so its quite possible that not all of these will be inside the
#ifndef ... #endif brackets that should check for and skip multiple
inclusions.
He asked about import "statements". He didn't mention '#include'.
C++ has an import directive:
http://msdn.microsoft.com/en-us/library/8etzzkb6(v=vs.71).aspx
That said, if the OP did mean '#include' your comments are on the mark.
Since, unlike a C/C++ #include statement, an import doesn't pull in any
source code, Java can never have this sort of clash.
Java 'import' and C++ '#include' are not the same thing at all. What Martin
tells you here is the difference.
Does source code order matter? Of course it does, and that's why '#include'
order matters, and Java 'import' order doesn't.
Whether you say it first, fourth or seventeenth, if you import 'List' as an alias
for 'java.util.List', it will alias that FQN (fully-qualified name).