We may know that Java introduces the package mechanism, provides the class's multi-level namespace, resolves the class naming conflict, the class file management and so on. But there are always some problems.
problem a
The files in E:\Demo\java are: Zi.java, Test.java two files
The code in Zi.java is as follows:
public class Zi {public void print () {SYSTEM.OUT.PRINTLN ("abc");}}
The code in Test.java is as follows:
Import com. Zi;public class Test{public static void Main (string[] args) {new Zi (). print ();}}
Compile Zi.java in the DOS window, "javac-d. Zi.java ", afterwards. Found the Zi.class file in the current directory, so I created a new COM folder and put the class file in it
Then, compile Test.java, "Javac Test.java", compile error:
E:\demo\java>javac Test.java
Test.java:2: Could not access com. Zi
Wrong class file:. \com\zi.class
Class file contains the wrong class: Zi
Either delete the file or make sure the file is in the correct classpath subdirectory.
Import com. Zi;
Why is there such a mistake? The following explanations are given after finding the data:
Many beginners think that as long as the generated class file is placed in a directory, this directory name becomes the package name of this class. This is a false view, not having a directory structure, is equivalent to having the package name. Adding packages for Java classes must be specified in the Java source file through the package statement, which cannot be specified by the directory name alone. Therefore,the Java package mechanism requires two aspects of the guarantee: 1, the source file using the package statement to specify the packet name, 2, the class file must be placed in the corresponding path.
Question Two
How does import static work?
This is a static import syntax added after JDK1.5, which is used to import a static field, method, or all static field, method of a specified class. The static field, method referred to here is the Class property, the class method.
Import and Import static: You can omit the package name by using import, and you can omit the class names by using import static.
Import static Java.lang.system.*;import static java.lang.math.*;p ublic class test{public static void Main (string[] args) {//out is a static field of the Java.lang.System class, representing the standard output//pi is the static field of the Java.lang.Math class, which represents the π constant Out.println (pi);// Call the Sqrt static method of the math class directly out.println (sqrt (256));}}
This article is from the "Yunfei Dance" blog, please make sure to keep this source http://wuyunncu.blog.51cto.com/5978596/1600767
A brief discussion on package, import and import static