3.3 包:库单元

3.3.1 命名空间

  • Java引入了包的机制,以提供类的多重命名空间,同时也负责类名空间管理。把因不同目的和不同工作而开发的类放在不同的包中,即使在出现相同的类名的时候,也可以很好地管理。包可以有一定的层次,对应着外存上的目录结构。
  • 为了区别于各种平台Java中采用了“.”来分隔目录,与域名地址不同的是,Java将主类从左侧写起。
  • Java中提供了大量的包(类库),如java.util、java.lang、java.swing

3.3.2 package

  • package语句放在Java源程序文件的第一行,指明该文件中定义的类存放到哪个包中。程序中可以没有package语句,此时类将存放到默认包中。例如:
package  pkg1.[pkg2.[pkg3.…]];
package access.mypackage;
  • 显然package语句最多只能有一条。
  • 描述包的字符都用小写。

java 引入 标准标签库 java标准库是什么_Java

  • public class: 在每个编译单元中有且仅有一个公共类。
  • public class name: 类的名字与文件的名字相同,包括大小写,后缀名为.java。
  • additional classes: 主类的支持类。
    例如:
package access.mypackage;
 
public class MyClass {
//…
}
  • MyClass是命名在access.mypackage包中的,要想使用这个类,需要用import语句来导入该类。

3.3.3 import语句

  • import语句的作用是引入所需的类,以供在程序中使用类库中现有的类。
import  pkg1[.pkg2…].classname|*;
  • import语句在程序中放在package语句之后,类定义之前。一个Java源程序中可以有多条import语句。
    例如,在Java标准类库中有一个工具库java.util,其中有一个名为ArrayList的类,使用ArrayList类的一种方式是用其全名java.util.ArrayList来指定
public class FullQualification {
      public static void main(String[] args) {
	     java.util.ArrayList list = new 	java.util.ArrayList();
      }
}

如果多处都用到了这个标准类,那么程序就显得冗长,可以使用import语句导入该类

import java.util.ArrayList;
      public class SignleImport {
            public static void main(String[] args) {
                  ArrayList list = new ArrayList();
            }
}

现在就可以不用限定地使用ArrayList类了,但是这样java.util中的其他类仍旧是不可用的。要想导入某个包中年所有的类,可以使用通配符“*”

import java.util.*;

使用通配符只能导入某个包中的所有类,但不能导入该包内的子包,导入子包内的类时,需要再写上一条import语句
package和import关键字可以确保无论多少人使用java编写类,都不会出现名称冲突问题,如果采用简称出现冲突,则需要使用类的全名来描述

import java.util.*;
import access.mypackage.Vector;
Vector v=new Vector();//error
java.util.Vector v=new java.util.Vector();

在这个例子中,在access.mypackage包中声明了一个Vector类,在java.util包中也包含了一个Vector类,如果只通过Vector类名来声明变量的话就会产生冲突,这时候就要用到类在命名空间中的全称,用java.util.Vector或者access.mypackage.Vector来区分。

3.4 Java标准类库

3.4.1 Java常用包:java.lang包、java.util包

  • java.lang 包由解释程序自动加载,不需在程序中显式地使用语句import java.lang.*;
  • 提供常用的类、接口、一般异常、系统等编程语言的核心内容。如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等。
  • java.lang包括以下类

java 引入 标准标签库 java标准库是什么_编程语言_02

  • java.util包是Java实用工具类库。
  • 提供了一些实用的方法和数据结构。
  • Java提供日期(Date)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(Stack)、向量(ArrayList)、位集合(Bitset)以及哈希表(HashTable)等类来表示相应的数据结构。

3.4.2 Object类

  • java.lang.Object
  • Object类是所有Java类的基类,它处于Java开发环境的类层次树的根部。
  • 如果一个类在定义的时候没有包含extends关键字,编译器会将其作为Object类的直接子类。
  • Object类定义了所有对象的最基本的一些状态和行为,它提供的方法会被Java中的每个类所继承。
  • 可以使用类型为Object的变量引用任意类型的对象

3.4.3 System类

  • Java.lang.System
  • System不能被实例化, 所有的方法都可以直接引用。
  • System类提供了标准输入(in)输出(out)和错误(error)流。

3.4.4 Math类

  • Math类包含在java.lang包中,同样由解释器自动加载
  • 这些方法是静态方法,不用声明具体的实例,直接使用类名来调用
    如三角函数方法
Math.sin(0);//0.0
Math.sin(Math.PI/6);//0.5
Math.cos(Math.PI/6);//0.866