图形。
二.使用字符串与字符串类
java.lang 有两个字符串类String 和StringBuffer,封装了字符串的全部操作。其中 String 用来处理创建以后不再改变的字符串, StringBuffer 用来处理可变字符串。 String 和StringBuffer 为最终类, 不能派生子类, 可以防止用户修改。 String 和StringBuffer 类 在运行时要经历严格的边界条件检验,可以自动捕获异常,可以提高程序的健壮性。 1.创建使用String 和StringBuffer 类的程序 (1)
程序功能:实现字符串的翻转。 (2)编写LX5_2.java 程序文件,源代码如下。 import java.applet.Applet; import java.awt.Graphics; public class LX5_2 extends Applet { public void paint(Graphics g) { String str="这是一个字符串——This is a test string"; g.drawString("正常字符串:"+str, 30, 30); g.drawString("翻转字符串:"+reverse(str), 30, 60); } public String reverse(String s) { int len=s.length(); StringBuffer buffer=new StringBuffer(len); for (int i=len-1; i>=0; i--)
buffer.append(s.charAt(i)); return buffer.toString(); } } 2.编译LX5_2.java 程序文件。 3.编写显示LX5_2.class 的页面文件LX5_2.html,
源代码如下。
4.在浏览器打开LX5_2.html 文件,结果如图5.3 所示。
5. 程序分析: 程序在paint 方法中首先定义一个String 类对象str, 将"This is a test string" 将 字符串常量赋给了str 实际的程序流程为
Java 系统先为字符串常量创建一个无名字符串对 ( 象,然后再把字符串的引用赋给str)。然后使用Graphics 的对象g,调用drawString 方法 输出原始字符串, 然后输出翻转后的字符串, 对字符串的翻转操作使用自定义的reverse 方 法实现。在drawString 方法里有一个字符串表
达式,将字符串常量和字符串变量进行了连 接 (+) 运算, 其结果仍为字符串对象, 字符串连接是String 类的唯一运算操作。 drawString (字符串对象,x 坐标,y 坐标)方法将字符串按定义的位置在Applet 中显示出来。 在reverse 方法中,创建了StringBuffer 对象buffer,在创建时指定其长度为字符串 参数s 的长度。程序中使用了String 类的方法charAt(i)(可返回字符串的第i 个字符), 使用了StringBuffer类的方法append 连接字符串(可将参数值添加到字符串尾部)。在for 循环中,每次反向从字符串s中取出一个字符添加到buffer 的尾部。循环完毕,buffer 中
存放的就是翻转后的字符串。因为reverse方法的返回值是String 类型,因此还调用了 toString 方法将StringBuffer 类型转换成String 类型再返回。
三.使用数学函数类
Math 是一个最终类,含有基本数学运算函数,如指数运算、对数运算、求平方根、三 角函数、随机数等,可以直接在程序中加Math.前缀调用。 1. 创建使用Math 类的应用程序LX5_8.java,源程序如下。 import java.util.*; class LX5_8 { public static void main(String args[]) { Random r1=new Random(1234567890L); Random r2=new Random(1234567890L); boolean b=r1.nextBoolean(); // 随机数不为0 时取真值 int i1=r1.nextInt(100); // 产生大于等于0 小于100 的随机数 int i2=r2.nextInt(100); // 同上 double i3=r1.nextDouble(); // 产生大于等于0.0 小于1.0 的随机数 double i4=r2.nextDouble(); // 同上 double d1=Math.sin(Math.toRadians(30.0)); double d2=Math.log(Math.E); double d3=Math.pow(2.0, 3.0); int r=Math.round(33.6F); System.out.println("b 的随机数不为0 时 "+b); System.out.println("i1 的随机数为 "+i1); System.out.println("i2 的随机数为 "+i2); System.out.println("d1 的随机数为 "+i3); System.out.println("d2 的随机数为 "+i4); System.out.printl