一. 实验目的
1. 掌握String类和StringBuffer类等常用类;
2. 掌握各常用类的实际运用方法。
二. 实验内容及要求
编写一个Java程序,实现以下功能:
1. 编写两个方法strCopy1和strCopy2,分别用String类和StringBuffer类实现字符串的拷贝操作。
2. 在主类的main()方法中分别调用strCopy1和strCopy2完成字符串的拷贝操作,并比较二者的执行效率。
三. 实验过程及结果
public class StringCopy {
/**
* @param str:待复制字符串
* @return:复制后的字符串
* 实现过程:1.创建空对象s
* 2.将str(String类型)中的字符逐个复制到s
*/
static String strCopy1(String str){
String s = "";
for (int i = 0; i < str.length(); i++) {
s += str.charAt(i);
/**
* 输出String对象 s 所存储的引用
* System.out.println(i + ". " + Integer.toHexString(s.hashCode()));
*/
}
return s;
}
/**
* @param str:待复制字符串
* @return:复制后的字符串
* 实现过程:1.创建空对象sBuffer
* 2.将str(String类型)中的字符逐个复制到sBuffer
*/
static StringBuffer strCopy2(String str){
StringBuffer sBuffer = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
sBuffer.append(str.charAt(i));
/**
* 输出StringBuffer对象 sBuffer 所存储的引用
* System.out.println(i + ". " + Integer.toHexString(sBuffer.hashCode()));
*/
}
return sBuffer;
}
public static void main(String[] args) {
String sTest = "A string that is used to test";//待复制字符串
long startTime = System.nanoTime();//获取函数执行前时间
String s1 = StringCopy.strCopy1(sTest);
long endTime = System.nanoTime();//获取函数执行后时间
long time1 = endTime - startTime;//获取函数strCopy1耗时
System.out.println("String@strCpy1 耗时:" + time1 + " 纳秒; " + s1);
startTime = System.nanoTime();//获取函数执行前时间
StringBuffer sb2 = StringCopy.strCopy2(sTest);
endTime = System.nanoTime();//获取函数执行后时间
long time2 = endTime - startTime;//获取函数strCopy2耗时
System.out.println("StringBuffer@strCopy2 耗时:" + time2 + " 纳秒; " + sb2);
}
}
将方法strCpy1 和 strCpy2 中的注释去掉,结果如下