要求一:
完成一个java application应用程序,通过接收用户通过键盘输入的文本,把每次回车输入的字符串动态加入到Vector类对象中,并显示此Vector类对象中存储的字符串。
要求二:
完成一个 java application应用程序,计算执行十亿次空循环所需要的时间,并在不同cup主频的计算机上运行此程序,比较其运算所需时间有何差别。
1、思路与知识点
- 关于Vector类:
翻阅jdk手册,可看到Vector 类为可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。
具有方法如下:
可以看到:
addELement()用法:将指定的组件添加到此向量的末尾,将其大小增加1.如果向量的大小比容量大,则增大其容量。
add()用法:可以将指定元素添加到此向量的末尾
因此在创建Vector类后,可以使用addELement()方法把输入的文本添加到创建的对象中。
-
关于System中的currentTimeMillis方法:
返回以毫秒为单位的当前时间。注意,当返回值的时间单位是毫秒时,值的粒度取决于底层操作系统,并且粒度可能更大。例如,许多操作系统以几十毫秒为单位测量时间。
2、代码
任务一:
import java.util.Scanner;
import java.util.Vector;
/*
完成一个java application应用程序,通过接收用户通过键盘输入的文本,
把每次回车输入的字符串动态加入到Vector类对象中,并显示此Vector类对象中存储的字符串。
*/
public class ApiTest2 {//类名
public static void main(String[] args) {//主入口
Scanner s = new Scanner(System.in);//输入对象创建,键盘等待用户输入直到输入回车停止
Vector v = new Vector();//创建Vector类对象
//输入文本方法
while(true){
System.out.println("请输入任意文本:");
String text = s.nextLine();//读取输入的下一行
if (!text.equals("quit")){//输入文本不为quit时存储输入内容
v.addElement(text);//调用addElement方法将输入文本添加至v对象中
System.out.println("输入存储内容为:"+v);
}else{
System.exit(0);//若用户输入文本为quit,则强制退出jvm结束程序
}
}
}
}
任务二:
/*
完成一个 java application应用程序,计算执行十亿次空循环所需要的时间,
并在不同cup主频的计算机上运行此程序,比较其运算所需时间有何差别。
*/
public class ApiTest3 {//类名
public static void main(String[] args) {//主入口
emptyLoop();//调用方法emptyLoop()
//注意:开始方法未定义成静态的,报错:无法在静态上下文中引用非静态。
//解决方法:1、将调用的方法设置成静态方法;
// 2、new本类,通过实例来调用。
}
//定义执行十亿次空循环的方法
public static double emptyLoop(){
long loopStart = System.currentTimeMillis();//定义long型起始时间变量
for(int i=1;i<=1000000000;i++);//执行十亿次空循环
long loopEnd = System.currentTimeMillis();//定义long型结束时间变量
double loopTime = loopEnd - loopStart;//求出执行循环所用时间
System.out.println("执行十亿次空循环所用时间为:"+loopTime+"ms");
return loopTime;//返回值
}
}
3、运行结果