Java包的导入

​ 在编写java程序的时候,往往会把具有不同功能的方法放在不同的.java文件里再写一个入口文件来运行,这时候就需要这时候通过导包把其他.java文件导入入口文件中。下面是导包的过程:

一:java文件和包在同一目录下

  1. 首先我创建了一个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修饰的方法是非静态的,不是独立存在的,需要通过创建对象再通过对象进行调用。

更多推荐

Java包的导入