Java 中import的用法,以及类的种类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 中import的用法,以及类的种类相关的知识,希望对你有一定的参考价值。

1. 类Human的访问修饰符是缺省访问控制符(即default),即类Human在包Human外是不可见的,只能被同一个包中的类访问或引用,所以你在包Human外写个程序是访问不了类Human的。2. 把写的程序放到包Human里面去,再次运行,提示:找不到符号:Human .首先是否编译了类Human; 其次在编译 放入包Human的那个程序 时要导入 类Human 的路径,Human类在包Human中,所以编译时采用 javac -cp Human类路径 放入包Human的那个程序类 (注意:Human类路径中不包含包Human,就是到包Human的父文件夹), 也可以直接在包Human中用javac *.java编译即可. 注意运行时当前路径要与包Human目录同级.在此还简单的说下对包和类的导入的理解:在Java中,是使用包来组织类的,其作用是确保类的唯一性,如有可能在同一个项目中,两个不同的程序员定义了相同名字的类Human,其各自把自己定义的Human类放在自己的定义的包中就不会冲突了(也就是包名是不同的),为了确保包名的绝对唯一性,在项目开发中,常把公司的域名逆序后做为包名,并对不同的项目采用不同的子包(如com.baidu; cn.com.sina等就是域名逆序,cn.com.sina.project1, cn.com.sina.project2 就是不同的项目包命名).一个类可以使用所属包中的所有类,也可以访问其他包中的公有类(即public类), 而要访问另一个包中的公有类,有两种做法:第一种是在每个类名前加完整的包名,如java.util.Date date = new Date();另外一种就是使用import语句,如import java.util.Date; import语句导入了类,但真正定位包中的类是编译器的工作,其实在字节码文件(以.class后缀的文件)中还是使用完整的包名来引用其他类的。把类放入包中,就是把包名放在类源码文件第一行,如package human;类的种类根据修饰符(modifiers)(不考虑内部类)对类的修饰,可以确认一个类:public class 类名:公共类,其可以被所有类访问,能实例化(也就是new操作);public abstract class 类名:抽象类,不可以实例化;public final class 类名:final类,不可继承;class 类名:同一包中可以被访问;从上可以看出,能修饰类的修饰符就是public,abstract,final,没有修饰符(default),其中abstract和final不能同时使用。 参考技术A 这个问题,首先要了解包的概念。

1. 什么是包?
在实际的编程过程中,因为需要用到大量的类,所以难免会导致类名的重复。在Java中,相同目录下,类是不允许重名的。所以用打包的方式将类分拣到不同的集合。

2. 如何导入一个包?

导入时机:当一个包中的class文件中需要使用到另一个包的某些类,就需要导入一个包。

方式:import + 包名
例:import java . util . * ; //导入工具包中所有的类

3. 类的种数?
类可以分为 抽象类,枚举类,工具类等,可以将不同的类放在各自的包中。

纯小白干货:Java import以及Java类的搜索路径

如果你希望使用Java包中的类,就必须先使用import语句导入。
import语句与C语言中的 #include 有些类似,语法为:
import package1[.package2…].classname;
package 为包名,classname 为类名。例如:

技术图片

 

注意:

  • import 只能导入包所包含的类,而不能导入包。
  • 为方便起见,我们一般不导入单独的类,而是导入包下所有的类,例如 import java.util.*;。


Java 编译器默认为所有的 Java 程序导入了 JDK 的 java.lang 包中所有的类(import java.lang.*;),其中定义了一些常用类,如 System、String、Object、Math 等,因此我们可以直接使用这些类而不必显式导入。但是使用其他类必须先导入。
前面讲到的”Hello World“程序使用了System.out.println(); 语句,System 类位于 java.lang 包,虽然我们没有显式导入这个包中的类,但是Java 编译器默认已经为我们导入了,否则程序会执行失败。

Java类的搜索路径

Java程序运行时要导入相应的类,也就是加载 .class 文件的过程。
假设有如下的 import 语句:

技术图片

 

该语句表明要导入 p1 包中的 Test 类。
安装JDK时,我们已经设置了环境变量 CLASSPATH 来指明类库的路径,它的值为 .;%JAVA_HOME%lib,而 JAVA_HOME 又为 D:Program Filesjdk1.7.0_71,所以 CLASSPATH 等价于 .;D:Program Filesjdk1.7.0_71lib。
Java 运行环境将依次到下面的路径寻找并载入字节码文件 Test.class:

  • .p1Test.class("."表示当前路径)
  • D:Program Filesjdk1.7.0_71libp1Test.class


如果在第一个路径下找到了所需的类文件,则停止搜索,否则继续搜索后面的路径,如果在所有的路径下都未能找到所需的类文件,则编译或运行出错。
你可以在CLASSPATH变量中增加搜索路径,例如 .;%JAVA_HOME%lib;C:javalib,那么你就可以将类文件放在 C:javalib 目录下,Java运行环境一样会找到。

以上是关于Java 中import的用法,以及类的种类的主要内容,如果未能解决你的问题,请参考以下文章

Java中File类的基本用法

java中怎么import其他路径下的类呢?

java File类的常见用法

纯小白干货:Java import以及Java类的搜索路径

java中用import引入另一个类的问题

Java中怎样获取一个类的所有子类?