分析Java程序设计09-10试卷A(二).docx_第1页
分析Java程序设计09-10试卷A(二).docx_第2页
分析Java程序设计09-10试卷A(二).docx_第3页
分析Java程序设计09-10试卷A(二).docx_第4页
分析Java程序设计09-10试卷A(二).docx_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

得分二、判断题。在题后括号内,填上正确答案代号。(本大题共14小题,每小题1分,共14分)( F )1、Java应用程序必须有一个类是public类。分析: 不必要, 可以全部是是private类, 比如后面会学到的”单例模式”( F)2、下列两个语句的作用等价:int a=1,2,3,4,5,6,7,8;int a=new int8;分析: 不等价, 前面是赋值了, 后面只是申请了空间( F )3、Java编译器将源文件编译生成的字节码是机器码。分析: 为了保持它跨平台的特性,java源文件先编译成一种中间码,在运行的时候再实时编译成目标平台的机器码( F )4、无论Java源程序包含几个类的定义,若该源程序文件以Itee.java命名,编译后生成的都只有一个名为Itee的字节码文件。分析: Java的源代码中定义几个类,编译结果就生成几个以class为后缀的字节码文件。( F )5、子类可以继承父类所有的成员变量及成员函数。分析: 私有变量和方法不能被继承( T )6、Java类中可以存在同名的两个成员方法。分析: 方法重载, 只要满足参数个数不同或参数类型不同便可( T )7、do-while的循环体至少被执行一次。分析: 先执行循环体, 再执行判断条件, 所以循环体至少被执行一次( T)8、若两个对象有相同的引用,则这两个对象就具有完全相同的属性和功能。分析: 如果:this为一个对象的引用。 otherobject为另一个对象的引用。如果this=otherobject,则这两个对象相等。利用来比较对象,只有在左右都指向同一个对象时成立,利用.equal来比较,则比较两个对象的内容是否一致,如:String的比较。( T )9、Socket类既用于客户端,又用于服务器端。分析: Socket是套接字, 用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过套接字向网络发出请求或者应答网络请求,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。服务器端: public class TCPServer public static void main(String args) throws Exception ServerSocket ss = new ServerSocket(6664); / 参数port - 端口号;或者为/ 0,表示使用任何空闲端口。while (true) / 可以建立多个端口与不同客户端相连Socket s = ss.accept(); / 接受连接并在服务器端再建一个端口来与用户端连接DataInputStream dis = new DataInputStream(s.getInputStream();System.out.println(dis.readUTF();dis.close();s.close();客户端: public class TCPClient public static void main(String args) throws UnknownHostException, IOException /参数前面为本机IP,后面为应用程序的端口号/Client端的端口系统随机选择/申请连接Socket s = new Socket(02,6664); /创建一个流套接字并将其连接到指定主机上的指定端口号.OutputStream os = s.getOutputStream(); /s.getOutputStream为输出管道DataOutputStream dos = new DataOutputStream(os); /包一层数据流dos.writeUTF(Hello server !); /以与机器无关方式使用 UTF-8(比较省空间) 修改版编码将一个字符串写入基础输出流。dos.flush();dos.close();s.close(); /连接完成以后要自己关闭( T)10、当instanceof左边的对象是右边的类创建的对象时,该运算的结果为true。分析:自己查API,( T)11、子类中的成员变量只要和父类中的变量同名,子类就隐藏继承的成员变量。分析:看书111页, 子类隐藏继承的成员变量, 即子类对象以及子类自己声明定义的方法操作与父类同名的成员变量是指子类重新声明定义的这个成员变量, 需要注意的是, 子类对象可以调用从父类继承的方法操作隐藏的成员变量.class People public double x;public void setX(double x) this.x = x;public double getDoubleX() return x;class Student extends People int x;public int getX() / x=20.56 /非法,return x;public class 成员变量的隐藏 public static void main(String args) Student stu = new Student();stu.x = 98; / 父类的x被隐藏了System.out.println(对象stu的x的值是: + stu.getX();/ stu.x=98.98; /非法stu.setX(98.98); / 只设计一个setX端口在父类,就可以修改父类中被隐藏的变量了double m = stu.getDoubleX(); / 通过父类的端口访问System.out.println(对象stu隐藏的x的值是: + m);( F )12、子类重写继承的方法时,可以降低方法的访问权限。分析: 1 基类有一个方法,比如 / 我们不考虑Object作为所有类的基类啦。 呵呵呵!public void method1()method2(); / 此方法需要调用method2();public void method2() / 如果这个方法是abstract 的话,也许会看得更清楚,不过不常见.2 子类重写了 Overrideprivate void method2() / 当然,编译错误,我们只是用来说明这样做的问题3 子类的子类如果他调用 method1() 会出现什么后果呢?a) 他能访问method1(), 因为那是他的基类,且是publicb) 但很可惜,method1()里面 却不能访问method2()了,因为在父类是private的了。这岂不是很可笑的情况。所以,子类不能比父类的更私有,但可以更公开。 呵呵。这样才能保证父类已经实现的代码能够使用。另:从5.0开始,子类方法override时,可以返回与父类不同的类型。但参数必须完全相同。( T )13、Java的包包含所有实现网络功能的类。分析: 记住吧( F )14、方法的重载实现功能的多态性,但构造方法不可以重载。分析也可以重载, 只要满足参数的个数或种类不同便可.得分三、填空题。在题中“ ”处填上答案。(本大题共18空,总计36分)1、Calendar对象调用set(2009,9,1)设置的年、月、日为 2009年10月1日 。分析: API中的解释setpublic final void set(int year, int month, int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。保留其他日历字段以前的值。如果不需要这样做,则先调用 clear()。参数:year - 用来设置 YEAR 日历字段的值。month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。date - 用来设置 DAY_OF_MONTH 日历字段的值。 如果想自己设置输出格式的话: 可以使用SimpleDateFormat, SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 - 文本)、解析(文本 - 日期)和规范化。public class Time public static void main(String args) new Time();System.out.println(Time.GetNowTime();public static String GetNowTime() Calendar rightNow = Calendar.getInstance();SimpleDateFormat fmt = new SimpleDateFormat(yyyy年MM月dd日 HH:mm:ss);String sysDatetime = fmt.format(rightNow.getTime();return sysDatetime;2、public URL(String protocol,String host,String file)throws MalfomedURLException构造的URL对象的 协议 、地址和资源分别由参数protocol、host和file指定。分析: 记住吧3、当把级别高的变量的值赋给级别低的变量时,须使用 显式类型转换 类型转换运算。分析: 自动类型转换(也叫隐式类型转换) 强制类型转换(也叫显式类型转换) 表达式的数据类型自动提升所有的byte型、short型和char的值将被提升到int型。如果一个操作数是long型,计算结果就是long型;如果一个操作数是float型,计算结果就是float型;如果一个操作数是double型,计算结果就是double型。个人觉得是为了保持精度, 所以有自动类型转换.4、Java中创建多线程主要采用一下两种方法:使用Thread子类,重写 run() 方法 ;使用 Runnable 接口,并将其实例与Thread实例相关联。分析: 建议使用第二种, 因为java只能继承一个类, 却可以重写很多接口, 所以实现接口更好些. 5、类成员的访问属性有:默认、public、 private和protected。分析: 送分题6、若要在程序中引入有用的数据类型类包中的Date类,则需使用语句: import java.util.Date;分析: 按住 ctrl+shift+m 导入指定的包, 按住ctrl+shift+o 导入所有包, 删除没有用过的包7、子类要想继承父类的所有参数的构造方法,须使用关键字super,super须是子类构造方法中的第一条语句。分析: 记住就好8. Java使用try-catch语句来处理异常,将可能出现的 异常(操作) 放在try部分,将发生异常后的处理放在catch部分,并可有多个catch部分组成。分析: 送分题9、FileInpueStream流的 read() 方法从输入流中顺序读取单个字节的数据。 分析: 原来答案是run(), 我查了API, 并没有这个方法, 根据题意, 应该是read()方法.用法看下面一个例子吧:public class FileOutputStream类 public static void main(String args) int b = 0; /b用来存放字节FileInputStream in = null; /初始化FileOutputStream out = null;try in = new FileInputStream(F:WorkspacesMyEclipse 8.6I_O流节点流InputStreamFileInputStream类.java);out = new FileOutputStream(F:360data重要数据桌面TEST.java);while(b = in.read() != -1) out.write(b); / 将指定 byte 写入此输出流in.close();out.close(); catch(FileNotFoundException e2) System.out.println(文件未找到!);System.exit(-1); catch(IOException e1) System.out.println(文件复制错误!);System.exit(-1);System.out.println(文件已复制);10.线程的优先级可通过 setPriority(int grade)方法调整,这一方法需要一个int类型参数。分析: /线程的优先级用数字表示,范围从1到10,一个线程缺省优先级是5/Thread.MIN_PRIORITY = 1; Thread.MAX_PRIORITY = 10; Thread.NORM_PRIORITY = 5;/使用int getPriority()可以获得线程对象的优先级,使用void setPriority(int newPriority)可以设置线程对象的优先级import java.lang.Thread;public class setPriority方法 public static void main(String args) Thread t1 = new Thread(new T1();Thread t2 = new Thread(new T2();t1.setPriority(Thread.NORM_PRIORITY + 3);t1.start();t2.start();class T1 implements Runnable public void run() for (int i = 0; i 10; i+) System.out.println(T1: + i);class T2 implements Runnable public void run() for (int i = 0; i 10; i+) System.out.println(-T2: + i);11. 下列代码接收键盘输入一整数,并显示于屏幕上:public static void main(String args) throws Exception String s=; int i = 0; System.out.println(Enter a string please: ); BufferedReader in =new BufferedReader(new InputStreanReader (System.in); s = in.readLine();i = Integer. parseInt (s); System.out.println(The Enter is: + i); 分析: BufferedReader(Reader in)参数是个Read类型 而java.lang.Object java.io.Reader java.io.InputStreamReaderInputStreamReader继承了Reader类, 就是多态的用法.再看中间:InputStreamReader(InputStream in)参数是InputStream类型而System中public static final InputStream in返回类型正好是InputStream为什么要包那么多层呢?节点流外包了层转化流,方便中文输入(把键盘输入的字节流转化为字符流(防止像中文那样2个字节读取的).从键盘上读内容到程序中),再包了层缓冲流,方便整行读取(s = br.readLine();)只要记住就好了: 输入操作都是这种写法: BufferedReader in =new BufferedReader(new InputStreanReader (System.in);请看下面的例子: package 转换流;/非常典型的用法!/节点流外包了层转化流,方便中文输入,再包了层缓冲流,方便整行读取import java.io.*;public class InputStreamReader类 public static void main(String args) / System.in是标准输入流(阻塞)InputStreamReader isr = new InputStreamReader(System.in); / 把键盘输入的字节流转化为字符流(防止像中文那样2个字节读取的).从键盘上读内容到程序中BufferedReader br = new BufferedReader(isr); / 再包一层缓冲区,有一个比较好的方法,readLine(),可以整行得读String s = null; / s用来记录输入的一行字符try s = br.readLine(); / 整行读取while (s != null) if (s.equalsIgnoreCase(exit)break;System.out.println(s.toUpperCase(); / 转化为大写s = br.readLine(); / 读取下一行br.close(); catch (IOException e) e.printStackTrace();Integer. parseInt(String s)是一种很常用的将字符串转换为int类型的方法,还可以转换成其他类型, 比如parseDouble parseLong 自己查API12.下列代码将c:aa.txt文件的数据读出,写入文件c:bb.txt中,并显示于屏幕上:public static void main(String args) throws ExceptionString s = new String();BufferedReader in =new BufferedReader(new FileReader (c:aa.txt);PrintWriter out =new PrintWriter( new FileWriter (c:bb.txt);while(s = in.readLine()!= null) System.out.println(s); out .println(s);in.close();out.close();分析: BufferedReader(Reader in), 而从文件中读取的节点流是: FileReaderjava.lang.Object java.io.Reader java.io.InputStreamReader java.io.FileReader这也是多态.缓冲流的作用是把把原本一个一个读取的数据, 分层一块一块读取, 每次这一块放了一定的数据后, 才会读入. 最后全部读入. 可以提高效率, 减少读取的次数.System.out应该不陌生吧, 它的返回类型就是PrintRead类型, 只不过现在不是在控制台显示了, 而是写入文件中而已.下面看两个例子: 缓冲流和PrintRead用法package 缓冲流;import java.io.*;public class BufferedWriter_BufferedReader public static void main(String args) try BufferedWriter bw = new BufferedWriter(new FileWriter(F:TEST.txt);BufferedReader br = new BufferedReader(new FileReader(F:TEST.txt);String s = null;for(int i=0; i=100; i+) s = String.valueOf(Math.random(); /生成一个随机数, 返回该对象的字符串表示bw.write(s);bw.newLine(); /写入一个行分隔符bw.flush(); /刷新该流的缓冲,把缓冲区内未写入的都写入while(s=br.readLine() != null) System.out.println(s); /读取一个文本行bw.close();br.close(); catch (IOException e) e.printStackTrace(); package Print流;import java.io.*;import java.util.*;public class PrintWriter类 public static void main(String args) String s = null; /s用来存放键盘输入的数/键盘输入的节点流处理成字符流(方便中文输入),再套上缓冲流,方便正行读取BufferedReader br = new BufferedReader(new InputStreamReader(System.in);try FileWriter fw = new FileWriter(F:360data重要数据桌面TEST.txt,true);PrintWriter log = new PrintWriter(fw);while(s = br.readLine() != null) if(s.equalsIgnoreCase(exit) break;System.out.println(s.toUpperCase(); /在显示器上输出log.println(-);log.println(s.toUpperCase();log.flush(); /把缓冲区的东西都读入文件中(其实PrintWriter已经实现了)log.println(=+new Date()+=); /Data()类用来表示特定的瞬间log.flush();log.close(); catch(IOException e) e.printStackTrace();13. 用static修饰的方法,称为静态方法。它们不是对象的方法,而是整个类的方法。静态方法只能处理用关键字static 修饰的数据。分析: 静态方法(类方法)只能处理静态变量(类成员), 而普通方法(成员方法)则可以处理所有变量, 包括静态变量(类变量)和普通变量(成员变量), 所以不推荐在主方法中(public static void main(String args)写函数体. 比较推荐的写法是public class Test public static void main(String args) new Test().init();public void init() 要写的内容得分四、简答题。(本题共8分,每题4分) 1、 关键字this可以出现在构造方法中吗?可以出现在实例方法中吗?如可以,它分别代表什么?关键字this可以出现在类的构造方法中(1分),代表使用该构造方法所创建的对象(1分);可以出现在类的实例方法中(1分),代表使用该方法的当前对象(1分)。2、 简述实现多态性的几种技术(至少两种)?1)与继承有关的多态性实现技术(上转型对象):父类的方法被其子类重写时,可以各自产生自己的功能行为,同一个操作被不同类型对象调用时可能产生不同的行为。不同对象的上转型对象调用同一方法可能产生不同的行为,实现多态性。2)接口回调技术:不同的类在使用同一接口时,可能具有不同的功能体现,即具有不同的接口方法体,接口回调产生不同的行为,实现多态性。3)方法重载技术:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即要么参数的个数不同,要么参数的类型不同,通过对象调用重载的方法实现功能的多态性。3、匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 得分五、编程题。(本题共10分,每空1分)仔细阅读并分析下列程序,填写程序的空缺部分。提示:改程序能计算并输出Company对象一年需要支付的薪水总额。要求有一个abstract类,类名为Employee。Employee的子类有YearWorker、MonthWorker和WeekWorker,其对象分别按年、月、周领取薪水(不同职员的具体薪水可分别定位80000元/年、5000元/月、800元/周,每年按12个月或52周计算)。Employee类有一个abstract方法:public abstract earnings();子类须重写父类的earnings()方法,给出各自领取报酬的具体方式。abstract class Employee public abstract double earnings();Class YearWorker extends Employee public double earnings( ) /重写earnings()方法 return 80000; class MonthWorker extends Employee public double earnings( ) /重写earnings()方法 return 12*5000; class WeekWorker extends Employee public double earnings( ) /重写earnings()方法 return 52*800; class CompanyEm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论