System.out.println(s);
}
}
结果:
2016-12-14(星期三)
向后滚动(在月内)25天
2016-12-08(星期四)
再向后滚动(在年内)25天
2016-01-02(星期六)
(7)上机执行下列程序(学习Runtime类),注意观察程序的输出结果。
publicclassTest{
publicstaticvoidmain(String[]args){
Runtimeruntime=Runtime.getRuntime();
longfree=runtime.freeMemory();
System.out.println("Java虚拟机可用空闲内存"+free+"bytes");
longtotal=runtime.totalMemory();
System.out.println("Java虚拟机占用总内存"+total+"bytes");
longn1=System.currentTimeMillis();
for(inti=1;i<=100;i++){
intj=2;
for(;j<=i/2;j++){
if(i%j==0)break;
}
if(j>i/2)
System.out.print(""+i);
}
longn2=System.currentTimeMillis();
System.out.printf("\n循环用时:
"+(n2-n1)+"毫秒\n");
free=runtime.freeMemory();
System.out.println("Java虚拟机可用空闲内存"+free+"bytes");
total=runtime.totalMemory();
System.out.println("Java虚拟机占用总内存"+total+"bytes");
}
}
结果:
Java虚拟机可用空闲内存15165544bytes
Java虚拟机占用总内存16252928bytes
12357111317192329313741434753596167717379838997
循环用时:
0毫秒
Java虚拟机可用空闲内存14803416bytes
Java虚拟机占用总内存16252928bytes
4.编程题
(1)字符串调用publicStringtoUpperCaseO方法返回一个字符串,该字符串把当前字符串中的小写字母变成大写字母;字符串调用publicStringtoLowerCaseO方法返回一个字符串,该字符串把当前字符串中的大写字母变成小写字母。
String类的publicStringconcat(Stringstr)方法返回一个字符串,该字符串是把调用该方法的字符串与参数指定的字符串连接。
编写一个程序,练习使用这3个方法。
(2)String类的publiccharcharAt(intindex)方法可以得到当前字符串index位置上的一个字符。
编写程序使用该方法得到一个字符串中的第一个和最后一个字符。
(3)计算某年某月某日和某年某月某日之间的天数间隔。
要求年、月、日使用main方法的参数传递到程序中(参看例子4)。
(4)编程练习Math类的常用方法。
(5)编写程序剔除一个字符串中的全部非数字字符,例如,将形如“abl23you”的非数字字符全部剔除,得到字符串“123”(参看例子10)。
(6)使用Scanner类的实例解析字符串”数学87分,物理76分,英语96分”中的考试成绩,并计算出总成绩以及平均分数(参看例子14)。
编程题:
(5)编写程序剔除一个字符串中的全部非数字字符,例如,将形如“ab123you”的非数字字符全部剔除,得到字符串“123”(参考例子8_10).
(6)使用Scanner类的实例解析字符串“数学87分,物理76分,英语96分”中的考试成绩,并计算出总成绩以及平均分数(参考例子8_14)
习题9
1.问答题
(1)JFrame类的对象的默认布局是什么布局?
(2)一个容器对象是否可以使用add方法添加一个JFrame窗口?
(3)JTextField可以触发什么事件?
(4)JTextArea中的文档对象可以触发什么类型的事件?
(5)MouseListener接口中有几个方法?
(6)处理鼠标拖动触发的MouseEvent事件需使用哪个接口?
2.选择题
(1)下列哪个叙述是不正确的?
A.一个应用程序中最多只能有一个窗口。
B.JFrame创建的窗口默认是不可见的。
C.不可以向JFrame窗口中添加JFrame窗口。
D.窗口可以调用setTitle(Strings)方法设置窗口的标题。
(2)下列哪个叙述是不正确的?
A.JButton对象可以使用addActionListener(ActionListenerl)方法将没有实现ActionListener接口的类的实例注册为自己的监视器
B.对于有监视器的JTextField文本框,如果该文本框处于活动状态(有输入焦点)时,用户即使不输入文本,只要按回车(Enter)键也可以触发ActionEvent事件
C.监视KeyEvent事件的监视器必须实现KeyListener接口
D.监视WindowEvent事件的监视器必须实现WindowListener接口
(3)下列哪个叙述是不正确的?
A.使用FlowLayout布局的容器最多可以添加5个组件
B.使用BorderLayout布局的容器被划分成5个区域
C.JPanel的默认布局是FlowLayout布局
D.JDialog的默认布局是BorderLayout布局
3.编程题
(1)编写应用程序,有一个标题为“计算”的窗口,窗口的布局为FlowLayout布局。
窗口中添加两个文本区,当我们在一个文本区中输入若干个数时,另一个文本区同时对你输入的数进行求和运算并求出平均值,也就是说随着你输入的变化,另一个文本区不断地更新求和及平均值。
(2)编写一个应用程序,有一个标题为“计算”的窗口,窗口的布局为FlowLayout布局。
设计四个按钮,分别命名为“加”、“差”、“积、”、“除”,另外,窗口中还有三个文本框。
单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。
要求处理NumberFormatException异常。
(3)参照例子15编写一个体现MVC结构的GUI程序。
首先编写一个封装梯形类,然后再编写一个窗口。
要求窗口使用三个文本框和一个文本区为梯形对象中的数据提供视图,其中三个文本框用来显示和更新梯形对象的上底、下底和高,文本区对象用来显示梯形的面积。
窗口中有一个按钮,用户单击该按钮后,程序用3个文本框中的数据分别作为梯形对象的上底、下底和高,并将计算出的梯形的面积显示在文本区中。
习题10
1.问答题
(1)如果准备按字节读取一个文件的内容,应当使用FilelnputStream流还是FileReader流?
(2)FilelnputStream流的read方法和FileReader流的read方法有何不同?
(3)BufferedReader流能直接指向一个文件吗?
(4)使用ObjectlnputStream和ObjectOutputStream类有哪些注意事项?
(5)怎样使用输入、输出流克隆对象?
2.选择题
(1)下列哪个叙述是正确的?
A.创建File对象可能发生异常。
B.BufferedRead流可以指向FileInputStream流。
C.BufferedWrite流可以指向FileWrite流。
D.RandomAccessFile流一旦指向文件,就会刷新该文件。
(2)为了向文件hello.txt尾加数据,下列哪个是正确创建指向hello.txt的流?
A.try{OutputStreamout=newFileOutputStream(“hello.Txt”);
}
catch(IOExceptione){}
B.try{OutputStreamout=newFileOutputStream(”hello.txt”,true);
)
catch(IOExceptione)(}
C.try{OutputStreamout=newFileOutputstream(”hello.txt”,false);
}catch(IOExceptione){}
D.try{OutputStreamout=newOutputStream(”helio.txt”,true);)
catch(IOExceptione){}
3阅读程序
(1)文件E.java的长度是51个字节,请说出E类中标注的【代码l】和【代码2】的输出结果。
importjava.io.*;
publicclassE{
publicstaticvoidmain(Stringargs[]){
Filef=newFile("E.java");
try{
RandomAccessFilein=newRandomAccessFile(f,"rw");
System.out.println(f.length());//【代码1】
FileOutputStreamout=newFileOutputStream(f);
System.out.println(f.length());//【代码2】
}
catch(IOExceptione){
System.out.println("FilereadError"+e);
}
}
}
(2)请说出E类中标注的【代码1】~【代码4】的输出结果。
importjava.io.*;
publicclassE{
publicstaticvoidmain(Stringargs[]){
intn=-1;
Filef=newFile("hello.txt");
byte[]a="abcd".getBytes();
try{
FileOutputStreamout=newFileOutputStream(f);
out.write(a);
out.close();
FileInputStreamin=newFileInputStream(f);
byte[]tom=newbyte[3];
intm=in.read(tom,0,3);
System.out.println(m);//【代码l】
Strings=newString(tom,0,3);
System.out.println(s);//【代码2】
m=in.read(tom,0,3);
System.out.println(m);//【代码3】
s=newString(tom,0,3);
System.out.println(s);//【代码4】
}
catch(IOExceptione){}
}
}
结果:
3
abc
1
dbc
(3)了解打印流。
我们已经学习了数据流,其特点是用Java的数据类型读写文件,但使用数据流写成的文件用其他文件阅读器无法进行阅读(看上去是乱码)。
PrintStream类提供了一个过滤输出流,该输出流能以文本格式显示Java的数据类型。
上机执行下列程序。
importjava.io.*;
publicclassE{
publicstaticvoidmain(Stringargs[]){
try{
Filefile=newFile("P.txt");
FileOutputStreamout=newFileOutputStream(file);
PrintStreamps=newPrintStream(out);
ps.print(12345.6789);
ps.println("howareyou");
ps.println(true);
ps.close();
}
catch(IOExceptione){}
}
}
4.编写程序
(1)使用RandomAccessFile流将一个文本文件倒置读出。
(2)使用Java的输入、输出流将一个文本文件的内容按行读出,每读出一行就顺序添加行号,并写入到另一个文件中。
(3)参考例子16,解析一个文件中的价格数据,并计算平均价格,该文件的内容如下。
商品列表:
电视机,2567元/台
洗衣机,3562元/台
冰箱,6573元/台
习题11
1.问答题
(1)设置数据源的主要步骤有哪些?
(2)如果采用JDBC.ODBC方式连接数据库,程序代码中是否必须要使用数据库的名字才能和数据库建立连接。
(3)预处理语句的好处是什么?
(4)什么叫事务,事务处理步骤是怎样的?
2.编程题
(1)参照例子2,编写一个应用程序来查询Access数据库,用户可以从键盘输入数据源名、表名。
(2)参照例子4,按商品名称进行模糊查询(用户从键盘输入商品名称)。
(3)参照例子5,按生产日期排序goods表的记录。
习题12
1.问答题
(1)线程有几种状态?
(2)引起线程中断的常见原因是什么?
(3)一个线程执行完run方法后,进入了什么状态?
该线程还能再调用start方法吗?
(4)线程在什么状态时调用isAlive0方法返回的值是false?
(5)建立线程有几种方法?
(6)怎样设置线程的优先级?
(7)在多线程中,为什么要引入同步机制?
(8)在什么方法中wait0方法、notify0及notifyAll0方法可以被使用?
(9)将例子6中SellTicket类中的循环条件while(fiveAmount<3)改写成if(fiveAmount<3)是否合理?
(10)线程调用interrupt0的作用是什么?
2.选择题
(1)下列哪个叙述是错误的?
A.线程新建后,不调用start方法也有机会获得CP