内容提示:Java类库是Java语言提供的已经实现的标准类的集合,是Java语言的API,利用这些类库可以方便快速的实现程序中的各种功能。本章具体讲述了语言包java.lang和实用程序包java.util中常用的数学运算类、字符串类、日期时间以及向量哈希表等类的使用方法。
Java的类库是Java语言提供的已经实现的标准类的集合,是Java编程的API(Application Program Interface),它可以帮助开发者方便、快捷地开发Java程序。这些类根据实现的功能不同,可以划分为不同的集合,每个集合组成一个包,称为类库。Java类库中大部分都是由Sun公司提供的,这些类库称为基础类库。
Java语言中提供了大量的类库共程序开发者来使用,了解类库的结构可以帮助开发者节省大量的编程时间,而且能够使编写的程序更简单更实用。Java中丰富的类库资源也是Java语言的一大特色,是Java程序设计的基础。
Java常用包的简单介绍如下:
(1)java.lang包:主要含有与语言相关的类。java.lang包由解释程序自动加载,不需要显示说明。
(2)java.io包:主要含有与输入/输出相关的类,这些类提供了对不同的输入和输出设备读写数据的支持,这些输入和输出设备包括键盘、显示器、打印机、磁盘文件等。
(3)java.util包:包括许多具有特定功能的类,有日期、向量、哈希表、堆栈等,其中Date类支持与时间有关的操作。
(4)java.swing包和java.awt包:提供了创建图形用户界面元素的类。通过这些元素,编程者可以控制所写的Applet或Application的外观界面。包中包含了窗口、对话框、菜单等类。
(5)java.net包:含有与网络操作相关的类,如TCP Scokets、URL等工具。
(6)java.applet包:含有控制HTML文档格式、应用程序中的声音等资源的类,其中Applet类是用来创建包含于HTML的Applet必不可少的类。
(7)java.beans包:定义了应用程序编程接口(API),Java Beans是Java应用程序环境的中性平台组件结构。
Java语言包(java.lang)定义了Java中的大多数基本类。该包中包含了Object类,Object类是整个类层次结构的根结点,同时还定义了基本数据类型的类,如:String、Boolean、Byter、Short等。这些类支持数字类型的转换和字符串的操作,在前面的章节中已经涉及了部分内容,本章主要介绍该包中的Math类和字符串类。
Math类提供了常用的数学运算方法以及Math.PI和Math.E两个数学常量。该类是final的,不能被继承,类中的方法和属性全部是静态,不允许在类的外部创建Math类的对象。因此,只能使用Math类的方法而不能对其作任何更改。表8-1列出了Math类的主要方法。
表8-1 Math类的主要方法
|
方法 |
功能 |
|
int abs(int i) |
求整数的绝对值(另有针对long、float、double的方法) |
|
double ceil(double d) |
不小于d的最小整数(返回值为double型) |
|
double floor(double d) |
不大于d的最大整数(返回值为double型) |
|
int max(int i1,int i2) |
求两个整数中最大数(另有针对long、float、double的方法) |
|
int min(int i1,int i2) |
求两个整数中最小数(另有针对long、float、double的方法) |
|
double random() |
产生0~1之间的随机数 |
|
int round(float f) |
求最靠近f的整数 |
|
long round(double d) |
求最靠近d的长整数 |
|
double sqrt(double a) |
求平方根 |
|
double sin(double d) |
求d的sin值(另有求其他三角函数的方法如cos,tan,atan) |
|
double log(double x) |
求自然对数 |
|
double exp(double x) |
求e的x次幂(ex) |
|
double pow(double a, double b) |
求a的b次幂 |
【例8-1】Math类主要方法的举例。
//********** ep8_1.java **********
class ep8_1{
public static void main(String args[]){
System.out.println("Pi="+Math.PI);
System.out.println("E="+Math.E);
System.out.println("abs(-6.8)="+Math.abs(-6.8));
System.out.println("ceil(6.8)="+Math.ceil(6.8));
System.out.println("floor(8.6)="+Math.floor(8.6));
System.out.println("max(-5,-6)="+Math.max(-5,-6));
System.out.println("min(5,6)="+Math.min(5,6));
System.out.println("round(8.6)="+Math.round(8.6));
System.out.println("sqrt(16)="+Math.sqrt(16));
System.out.println("exp(1)="+Math.exp(1));
System.out.println("log(e)="+Math.log(Math.E));
System.out.println("pow(2,3)="+Math.pow(2,3));
System.out.println("sin(30degree)="+Math.sin(Math.toRadians(30)));
System.out.println("atan(90degree)="+Math.atan(Math.PI/2));
}
}
运行结果:
Pi=3.141592653589793
E=2.718281828459045
abs(-6.8)=6.8
ceil(6.8)=7.0
floor(8.6)=8.0
max(-5,-6)=-5
min(5,6)=5
round(8.6)=9
sqrt(16)=4.0
exp(1)=2.7182818284590455
log(e)=1.0
pow(2,3)=8.0
sin(30degree)=0.49999999999999994
atan(90degree)=1.0038848218538872
其中“Math.toRadians(30)”表示把角度值转换为弧度值。
【例8-2】产生10个10~100之间的随机整数。
//********** ep8_2.java **********
class ep8_2{
public static void main(String args[]){
int a;
System.out.print("随机数为:");
for(int i=1;i<=10;i++){
a=(int)((100-10+1)*Math.random()+10);
System.out.print(" "+a);
}
System.out.println();
}
}
运行结果:
随机数为:12 26 21 68 56 98 22 69 68 31
由于产生的是随机数,例8-2每次运行的结果都不会相同。若要产生[a,b]之间的随机数其通式为:
(b-a+1)*Math.random()+a