包和数组
辽宁经济职业技术学院信息系
硕士、副教授 陈英
包 (package)
Java允许把多个类收集在一起成为一组,称作
包。
包便于组织任务,以及使自己的任务和其他
人提供的代码库相分离。
使用包的主要原因是保证类名的惟一性。
嵌套包的惟一目的就是管理惟一的名字。
Java编程语言提供 package机制作为把相关类
组成组的途径。迄今为止,所有的这些例子
都属于缺省或未命名包。
包的定义
包通过关键字 package来定义。
若要把类入一个包中,必须把此包的名字放在
源文件头部,并且放在对包中的类进行定义的
代码之前。
package语句必须是 java语言 程序的第一条语
句,指明该文件中定义的类所在的包。
根据源程序文件, 只允许有一个包声明 。
包名称是分层的,由圆点隔开。 通常情况下,
包名称的元素被整个地小写。
标准 Java库被分类成许多的包,其中包括
java.long,java.util和 java.net等等。
使用包
一个类可以使用它所在包中的所有类,也可以
使用来自其他包中的所有的 public类。
访问其他类中的 public类有两种方式:
1) 在每个类名前加上完整的包名。例如
java.util.Date today = new java.util.Date()
2) 通常使用 import关键字。 Import语句的作用
是给出一个指向此包中的类的快捷方式。一
旦使用 import以后,就不再需要给出完整的
包名。例,import java.util.* 然后可以使

Date today = new Date()
使用包
只能使用 *表示符来引入一个单独的包。
不能使用 import java.*或者 inport java *.*来引
入所有以 java为前缀的包。
只能引入类,而不能引入对象。例如,不能引
入 System.out。
若要引入的两个包中都含有需要使用的一个类,
只能在每个类前面加上完整的包名。
标准 Java库是分层次的。就像在硬盘上嵌套有
各级子目录一样。可以通过层次嵌套组织包。
所有的 java包都在 java和 javax包层次内。
包作用域
被标记为 public的部件(即类、方法或
变量)可以被任何类使用。
被标记为 private的部件只能被定义它
们的类使用。
如果没有 public 或 private,那么部件
可以被同一个包中的所有方法访问。
使用包
? 程序包,相当于其它语言中的库函数
? 打包 package Graphics;
class Square {…;}
class Circle {…;}
class Triangle {…;}
使用程序包中的类要用 import命令,表示路
径,*表示使用包中的所有类
import java.io.FileInputStream;
import java.io.*;
io
java
FileInputStream
类设计技巧
永远保持数据私有,否则会破坏封装。
永远初始化数据。 Java并不对变量初始化,
但它会初始化对象中的实例字段。但是永远
不要依赖于默认值,而要明确地初始化变量。
不要在一个类中使用太多的基本类型。可以
其它的类来代替多个相关的基本类型的使用。
不是所有的字段都需要自己的字段访问器。
用标准形式对类定义。
把有太多职责的类分解。
类设计技巧
以下面的次序列出类的内容:
1) 公开部件
2) 包作用域部件
3) 私有部件
在每一部分内,列出次序如下:
1) 实例方法
2) 静态方法
3) 实例字段
4) 静态字段
数组的定义
数组是一种数据结构,它用来存储具有相同类型的一
组数据。
可以声明任何类型的数组 ──原始类型或类类型:
在 Java编程语言中,即使数组是由原始类型构成,
或带有其它类类型,数组也是一个对象。声明不能
创建对象本身,而创建的是一个引用,该引用可被
用来引用数组。数组元素使用的实际存储器可由
new语句或数组初始化软件动态分配。
典型的数组是用来集合相同类型的对象并通过一个
名称来引用这个集合。
数组的定义
通过指定数组类型可以声明一个数组变量。
指定数组类型时,先写上元素类型,紧接着
是 [],最后是数据变量的名字。
例,int [] a;
int [] a = new int[100];
for (int i=0;i<100;i++)
a[i] = i ;
通过一个整数下标 (index)可以访问其中的每
一个值。
数组的定义
利用 arrayName.length可以知道一个数组元
素的数量。
数组一旦创建,它的大小就是不可改变的
(尽管可以改变其数组元素)。
例,int [] a;
int [] a = new int[100];
for (int i=0; i<a.length; i++)
a[i] = i ;
数组初始化和匿名数组
没有使用 new运算符的简写方式:
int [] a = {2,3,5,7,11,13};
匿名数组:可以不必创建一个新的变量
b = new int [] {17,19,23,31,37};
这是对下面语句的简写形式:
int [] c = {17,19,23,31,37};
b = c;
拷贝数组
当把一个数组变量拷贝给另一个变量时,两个变量都
指向相同的数组。
System类中的 arraycopy方法,调用如下:
System.arraycopy(from,fromIndex,to,toinde
x,count);
目的数组必须有足够的空间来容纳拷贝的元素。
例,int [] a = {2,3,5,7,11,13};
int [] b = {1001,1001,1003,1004,1005,1006,1007};
System.arraycopy(a,2,b,3,4);
for (int i = 0; i <b.length; i++ )
Systtem.out.println( i +,:” + b.[ i ]);
输出结果是:
0,1001
1,1002
2,1003
3,5
4,7
5,11
6,13
API java.util.Arrays
数组排序方法,static void sort(Xxx [] a)
说明,a——类型为 int,long,short,char、
byte,boolean,float或 double的一个数组利
用改进的快速排序法对此数组排序。
Math.random方法返回一个在 0(包括)到 1
(不包括)之间的随机浮点数。把此数与 n
相乘,可以得到在 0到 n-1之间的一个随机数
字。