Java包的导入
在编写java程序的时候,往往会把具有不同功能的方法放在不同的.java文件里再写一个入口文件来运行,这时候就需要这时候通过导包把其他.java文件导入入口文件中。下面是导包的过程:
一:java文件和包在同一目录下
-
首先我创建了一个Print1.java文件作为包。
package bao;//包名就是bao public class Print1{ public static void HelloWorld(){ System.out.println("包中的:Hello World!"); } }
然后我们通过
javac -d . Print1.java
来把这个java文件变成一个包(就是等于是把print1.java编译后生成的.class文件放进了一个名为bao的文件夹中)里面的内容是.class文件
2.在创建一个Print2.java文件作为入口文件
import bao.Print1;
public class Print2
{
public static void main(String[] args)
{
Print1.HelloWorld();//调用bao包中的HelloWorld方法
}
}
直接用javac Print2.java
进行编译java Print2
运行就可以了
二、java文件和包不在同一目录下
现在我的Print2.java文件放在了a文件夹下而Print1.Java以及生成的包在hh文件夹里
这个时候我再对Print2.java进行编译就会报错,显示包不存在
这个时候的解决办法就是改变环境变量
加上之后编译运行成功 (ps:在改变环境变量后要重新打开dos界面才行)
三、调用包中类的方法的两种情况
在上面的java程序中我调用包中类的方法时是直接通过类名.方法名(参数)
来实现的。同样是调用调用包中类的方法,当我们使用import java.util.Scanner
时我们却是通过
Scanner in = new Scanner(System.in)
再用in.nextInt()
之类的来调用的。我尝试了一下用
类名.方法名(参数)
来调用Scanner类,结果是报错了
我把我的代码Print1.java改成这样后再编译报的错也和上面一样
package bao;//包名就是bao
public class Print1{
public void HelloWorld(){
System.out.println("包中的:Hello World!");
}
}
经过网上查询我知道了写方法的是有static
修饰的是静态方法;这种方法可以直接通过类名.方法名(参数)
来实现。而没有static
修饰的方法是非静态的,不是独立存在的,需要通过创建对象再通过对象进行调用。