max=c;
}
returnmax;
}
}
4、定义一个Car类,保证该类对象在内存中只存在一个。
写出例程。
classPerson
{
privateStringname;
privateintage;
privatestaticPersonp=newPerson("zhangsan",18);
privatePerson(Stringn,inta){
this.name=n;
this.age=a;
}
publicstaticPersongetPerson(){
returnp;
}
publicstaticStringgetName(Personp){
returnp.name;
}
publicstaticintgetAge(Personp){
returnp.age;
}
}
publicclassTestSketch{
publicstaticvoidmain(String[]args){
System.out.println(Person.getName(Person.getPerson()));
}
}
第四关
1、接口和抽象类的区别
2、选择题
(1).在使用interface声明一个接口时,可以使用()修饰符修饰该接口。
A.private
B.protected
C.privateorprotected
D.public
(2)虽然接口和抽象类不能创建对象,但它们的对象引用仍可指向该类型的对象。
这种说法()
A.正确
B.不正确
C.不能确定
D.接口和抽象类不能说明其对象引用
(3).接口中说明了一组公共的抽象方法,其中是否包含公共的静态方法?
答案是()
A.可以
B.不可以
C.不能肯定
D.因静态方法不能被改写,故不能出现在接口中
4)当我们说明一个类C实现一个接口I,下面说法()不正确
A.接口I是类C一个超类型
B.类C也实现了接口I的超接口
C.类C的子类也实现接口I
D.接口I类型的对象引用所指定的对象一定是类C或其子类的一个对象。
3.填空题
(1)我们可以通过______接口______,使得处于不同层次,甚至互不相关的类具
有相同的行为,然后由每个类分别去实现这些行为。
(2)接口声明的关键字是______________。
(3)在声明类的同时,我们可通过关键字__________________实现接口。
(4)使用类实现接口时,必须__________该接口的所有方法。
(6)创建包的关键字是:
____________。
(7)引入包grade的best类,可使用语句:
____________________________。
第五关
1.下面这种捕获异常的方式适当么?
说明理由
Try{
…
}catch(Exceptione){
..
}catch(FileNotFoundExceptiona){
…
}
2.编写程序,越界访问数组元素的下标,捕获并打印异常信息。
3.描述模板方法设计模式。
写出例程。
第六关
1.编写一个线程使得4个线程同时运行。
publicclassTest{
publicstaticvoidmain(String[]args){
Threadt1=newThread(newA());
Threadt2=newThread(newB());
Threadt3=newThread(newC());
Threadt4=newThread(newD());
t1.start();
t2.start();
t3.start();
t4.start();
}
}
classAimplementsRunnable{
publicvoidrun(){
for(inti=0;i<50;i++){
System.out.println("AisStarted");
}
}
}
classBimplementsRunnable{
publicvoidrun(){
for(inti=0;i<50;i++){
System.out.println("BisStarted");
}
}
}
classCimplementsRunnable{
publicvoidrun(){
for(inti=0;i<50;i++){
System.out.println("CisStarted");
}
}
}
classDimplementsRunnable{
publicvoidrun(){
for(inti=0;i<50;i++){
System.out.println("DisStarted");
}
}
}
2.请在程序中创建一个HashSet实例对象,并向这个对象中添加三个自定义的Student类的实例对象(Student类有两个属性,姓名和年龄)。
要求:
如果两个Student对象相当,即两个Student对象的姓名和年龄相等时,必须保证HashSet里面只能有一个对象。
importjava.util.*;
publicclassTest{
publicstaticvoidmain(String[]args){
HashSeths=newHashSet();
hs.add(newStudent("zhangsan",20));
hs.add(newStudent("lisi",20));
hs.add(newStudent("wangwu",30));
hs.add(newStudent("zhaoliu",25));
hs.add(newStudent("zhaoliu",25));
Iteratoriter=hs.iterator();
Studentstr=null;
while(iter.hasNext()){
str=(Student)iter.next();
System.out.println(str);
}
}
}
classStudent{
Stringname;
intage;
Student(Stringname,intage){
this.name=name;
this.age=age;
}
publicStringgetName(){
returnname;
}
publicintgetAge(){
returnage;
}
publicinthashCode(){
returnname.hashCode()+age*17;
}
publicbooleanequals(Objectobj){
Studentstu=(Student)obj;
returnthis.name.equals(stu.name)&&this.age==stu.age;
}
publicStringtoString(){
returnname+":
:
:
:
:
:
:
"+age;
}
}
3.请利用System.getProperties()方法,打印出java虚似机的环境信息。
4.简述ArrayList、Vecor、LinkedList之间的区别?
Collection和Map之间的区别?
HashSet和TreeSet之间的区别?
HashTable和HashMap之间的区别?
然后编程向HashSet中保存自定义的类(Student),并取出打印。
5.写一个程序,允许用户依次输入多个姓名和住址,并能将用户的输入保存到文
件中。
用户输入”quit”表示输入完毕,程序退出。
6.有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括姓名,三门课成绩),
计算出总成绩,并把学生的信息和计算出的总分数存放在磁盘文件"stud.txt"中。
第七关
1、写一个程序,允许用户依次输入多个姓名和住址,并能将用户的输入保存到文
件中。
用户输入”quit”表示输入完毕,程序退出。
2、File类型的对象既可以表示文件,也可以表示目录。
编写一个程序,当用户输入
一个文件或是目录信息后,该程序能够完成如下工作:
(1).判断该文件或目录是否存在
(2).如果不存在则给出出错信息
(3).如果存在,则给出其相对路径、绝对路径、文件长度
(4).如果存在并且是文件,则显示文件内容
(5).如果存在并且是目录,则显示目录内的所有文件名
importjava.io.*;
publicclassTest{
publicstaticvoidmain(String[]args){
Inputin=newInput();
in.dealInput();
}
}
classInput{
publicvoiddealInput(){
BufferedReaderbufr=
newBufferedReader(newInputStreamReader(System.in));
Strings=null;
try{
s=bufr.readLine();
}catch(IOExceptione){
e.printStackTrace();
}
if(s!
=null){
Filefile=newFile(s);
if(file.isFile()){
System.out.println("此文件的绝对路径是:
"+file.getAbsolutePath()+"\r\n"+
"相对路径是:
"+file.getPath()+"\r\n"+
"文件长度是:
"+file.length()+"KB");
try{
Stringline=null;
BufferedReaderbuf=
newBufferedReader(newInputStreamReader(newFileInputStream(s)));
BufferedWriterbufw=
newBufferedWriter(newOutputStreamWriter(System.out));
while((line=buf.readLine())!
=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
buf.close();
bufw.close();
}catch(IOExceptione){
e.printStackTrace();
}
}elseif(file.isDirectory()){
String[]lists=file.list();
for(Stringstr:
lists){
System.out.println(str);
}
}elseif(s.equals("")){
System.out.println(s+"您输入了空串");
}
}else{
System.out.println("您的输入有误");
}
}
}
3、编写一个程序,在控制台接收数据,程序会让用户输入名字,并检查用户的输入:
不允许输入空名字。
一旦用户完成输入,程序会向该用户发出问候:
“Hello,你输入的名字。
”
4、请编写一个字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,
让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,
能够在读取的每行前面都加上有行号和冒号。
第八关
1.填空题
(1)我们使用包中有两个类___________和________________,分别用于
在客户机和服务器上创建Socket通信。
(2)我们可分别使用Socket的方法______________和_________________来创建
输入/输出流。
(3)在服务器端程序中,可使用ServerSocket对象的__________方法,接收来自
客户机程序的连接请求,待通信任务完毕后,用Socket对象的____________方法来
关闭通信Socket。
(4)我们可以通过_____________________类来建立数据报通信的Socket;用______________________类来创建数据报文包。
(5)我们可通过DatagramPacket类的方法____________从实例中取得报文的Byte
数组编码;而通过_____________来返回一个发送或接收此数据报包文的机器的IPXXX。
(6)我们可通过调用DatagramSocket对象的____________方法来完成接收数据报的工
作,通过调用DatagramSocket对象的____________方法实现发送数据报。
(7)待通信任务完毕后,用DatagramSocket对象的____________方法来关闭
数据报通信Socket。
2、利用Socket套接字进行面向连接通信的编程。
客户端发送文件;服务器端接收
并显示客户机XXX,然后返回信息“文件已收到”给客户端。
3、客户端输入并发送用户名;服务器端接收并显示其用户名,并检验它们的正确性,错则返回“对不起,你不是我们的用户。
”,对则返回“你好,欢迎光临”。