package和import

1、package

   当两个类重名的时候,我们通过-sourcepath或-cp使用两个类的源码或字节码文件的时候就会出现问题,可以通过package来管理类,避免名字冲突问题。比如在以下代码中我们使用package关键字分别将Main、Hello类定义在了xsl包下、xsl.fun包下,这样就必须手动建立xsl文件夹和xsl中的fun文件夹,将两个类的源文件放至对应的包文件夹中,而且在Main中使用Hello类的时候还要加上包的全名xsl.fun:

//Main.java
package xsl;
 
public class Main
{
	public static void main(String[] args)
	{
		xsl.fun.Hello.print();
	}
	public void test()
	{
		xsl.fun.Hello h = new xsl.fun.Hello();
	}
}
 
 
//Hello.java
package xsl.fun;
 
public class Hello
{
	public static void print()
	{
		System.out.println("hello world!!");
	}
}

  因为包就相当于是一个目录,所以在javac编译的时候要注意加上包目录:javac xsl/Main.java,java执行程序的时候也需要指定包名:java xsl.Main。

2、import

   在前面的Main类中我们只使用了一次Hello类,如果在一个文件中我们要多次使用它的话每次都要加上完整的包名就很麻烦,我们可以像下面这样使用import来提前声明Hello类,这样在编译的时候遇到Hello类时就会使用import声明的名称:

package xsl;
import xsl.fun.Hello;
 
public class Main
{
	public static void main(String[] args)
	{
		Hello.print();
	}
}

  还可以像下面这样来声明,这样在编译的时候只要遇到不认识的类就会尝试将其与import声明的名称结合来使用。需要注意的是import的时候不能省略上一级的包名,比如使用import xsl.* 的话就不能识别Hello了,因为父子包之间也不能随便方法。同一个包下的类可以自由访问而不用加包前缀,而且同一个包下的类可以访问其protected成员。

import xsl.fun.*;

    import static 用来导入类中静态成员变量或方法:

import java.util.List;
import static java.lang.System.out; //out为System的静态成员

public class Test
{
	public static void main(String[] args)
	{	
		List<String> names = List.of("c++", "java", "c#");
		names.forEach(out::println);
	}
}

3、Java的常用包

  Java默认使用了import java.lang.*声明,也就是说java.lang包下的类我们可以直接使用而不用再加上包名或者import这些包,这就是我们可以直接使用System类的原因。java.lang包下还包含了Object等类:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值