自学考试java程序设计(一)教材 课后习题答案

更新时间:2024-03-31 02:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、Java语言概述

1.Java语言有哪些特点?

2.什么叫做类?什么叫做对象? 3.简述Java的运行机制。

4.简述Java应用程序的开发流程。

5.当初Sun公司发展Java的原因是:来源:www.examda.com (a)要发展航空仿真软件 (b)要发展人工智能软件 (c)要发展消费性电子产品

6.Java是从哪种语言改进并重新设计? (a)Ade来源:www.examda.com (b)C++

(c)Pascal

7.Java因为什么快速发展而走红? (a)个人计算机与网络 (b)游戏软件

(c)系统软件

8.Java程序的种类有:

(a)内嵌于Web文件中,由浏览器来观看的__________ (b)可独立运行的__________考试大论坛 (c)服务器端的_________

9.Java是面向对象语言,对象是客观事物的,对象与之是一一对应的,它是很具体的概念。

10. 判断:用Javac编译Java源文件后得到代码叫字节码。() 参考答案

1.答:面向对象、简单、平台无关性、安全性、内存管理、分布式应用、多线程、动态、解释运行,高效能

2.答:在面向对象编程中,具体的客观实体称为对象,对象就是数据加方法。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类。类是对具有相同属性和方法的一组相似对象的抽象,或者说类是对象的模板。来源:考试大

3.答:Java程序的运行必须经过编写、编译、运行三个步骤。编写是指在Java开发环境中进行程序代码的输入过程,最终形成后缀名为.java源文件。编译是指使用Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件。运行是指使用Java解释器 将字节码文件翻译成机器代码,在cpu上运行并显示结果的过程。这一过程如图所示。考试大-全国最大教育类网站(www.Examda。com) 4.Java应用程序的运行经过编写、编译、运行三个步骤。

第1步,编写程序。使用记事本或其他软件编写程序的源代码,将源代码保存为文件filename.java文件。

第2步,编译程序。在MS-DOS命令窗口,将当前目录转换到Java源程序所在的保存目录;输入“javame.java”形式的命令进行程序编译。

第3步,执行程序。在同样的命令窗口中输入“javame”形式的命令执行程序。来源:考试大

完成了程序的开发,查看相应t目录,其中应该具有两个文件,分别是XXXX.java和XXXX.class。考试大收集整理

5.c

6.b来源:考试大 7.a

8.AppletApplicationServlets 9.软件模型

10.true二、数据类型和流程控制

1. 现有语句:String s = \则下面哪些语句是合法语句? A. s >>> = 3;B. s[3] = \

C. int i = s.length();D. String t = \ E. s = s + 10;

2.下面哪些是保留字?来源:考试大 A. run B. default C. implement D. import 3.下面声明float变量的语句合法的有: A. float foo = -1; B. float foo = 1.0;

C. float foo = 42e1; D. float foo = 2.02f; E. float foo = 3.03d; F. float foo = 0x0123;

4. 下面方法中的“返回类型无效”应该是什么? public class ReturnIt{ 来源:考试大 return无效 methodA(byte x, double y){

return (short)x / y * 2; }

}

5.以下哪两个表达式是等价的:

A. 3/2 B. 3<2 C. 3*4 D. 3<<2 E. 3*2^2F. 3<<<2 6.指出正确的表达式

A、 byte=128; 来源:考试大

B、 Boolean=null; C、 long l=0xfffL; D、 double=0.9239d; 7.分析下列程序的执行结果: (1)public class Test{

public static void main(String args[]){ int i = oxFFFFFFF1; int j = ~i;

System.out.println(\ }

}

(2)public class Test{

public static void main(String[] args){ 来源:考试大 System.out.println(6 ^ 3); } }

(3)public class FooBar{

public static void main(String[] args){

int i = 0, j = 5; tp:

for(; ; i++){ for( ; ; --j)

if(i > j) break tp;

}

System.out.println(\来源:考试大 }

}

(4)public class Test{ public static void main(){ int i = 1, j = 10; do{

if(i++ > --j)

continue; }while(i < 5);

System.out.println(\ }

}

(5)class Value{ public int i = 15; } 考试大论坛 public class Test{

public static void main(String argv[]){ Test t = new Test(); t.first(); }

public void first(){ int i = 5; Value v = new Value(); v.i = 25; second(v, i);

System.out.println(v.i); }

public void second(Value v, int i){

i = 0; v.i = 20; Value val = new Value(); 来源:考试大的美女编辑们 v = val;

System.out.println(v.i + \ } }

8.选出合理的标识符

A、 _sys1_lll B、 2mail C、 $change

D、 class 来源:考试大的美女编辑们

9. 判断:一个方法最多能有一个return语句()

10. Java语言中一个Char类型的数据占用2个字节大小的内存空间() 参考答案 1.cde 2.b,d 3.a,d,f

4.double来源:www.examda.com

5.c,d 6. d 7.(1)c(2)5(3)i = 0, j = -1 (4)i=5 j=6(5)15 0 20

8. a c 9. true

10.ture三、类与对象

1.什么叫引用类型,对象是引用类型吗?

2.什么是类成员,什么是实例成员?他们之间有什么区别?

3. 判断:数组、类和接口都是引用数据类型()

4.判断:类A和类B位于同一个包中,则除了私有成员,类A可以访问类B的所有其他成员()

5.下面哪个修饰符修饰的变量是所有同一个类生成的对象共享的() A、publicB、privateC、staticD、final采集者退散 6.下面关于java中类的说法哪个是不正确的()

A、类体中只能有变量定义和成员方法的定义,不能有其他语句。 B、构造函数是类中的特殊方法。

C、类一定要声明为public的,才可以执行。采集者退散 D、一个java文件中可以有多个class定义。 7.下列哪个类声明是正确的() A abstract final class H1{…} B abstract private move(){…} C protected private number; D public abstract class Car{…} 8.下述哪些说法是正确的? (多选)

A、 实例变量是类的成员变量来源:考试大的美女编辑们 B、 实例变量是用static关键字声明的 C、 方法变量在方法执行时创建 D、方法变量在使用之前必须初始化

9.设计一个动物类,它包含动物的基本属性。例如名称、大小、重量等,并设计相应的动作,例如跑、跳、走等。

10.设计一个长方形类,成员变量包括长和宽。类中有计算面积和周长的方法,并有相

应的set方法和get方法设置和获得长和宽。编写测试类测试是否达到预定功能。要求使用自定义的包。 参考答案

1.答:引用类型是指该类型的标识符表示的是一片内存连续地址的首地址。对象是引用类型。来源:考试大

2.答:Java中使用static修饰的变量和方法称为类变量(或称静态变量)和类方法(或称静态方法),没用static修饰符的变量和方法称为实例变量和实例方法。 类成员是指该成员属于这个类,由这个类所创建的所有对象共同拥有,该成员仅在类的存储单元中存在,这个类所创建的所有对象中仅存储一个指向该成员的 引用。任何一个该类的对象改变了类成员,其他对象同样会发生改变。对于类成员既可以使用对象访问,也可以使用类名直接进行访问,并且在类方法中只能访问类 变量,而不能访问实例变量。考试大-全国最大教育类网站(www.Examda。com)

实例成员是指该成员由每一个对象个体独有,对象的存储空间中的确有一块空间用来存储该成员,不同对象的实例成员不同,任何一个对象改变了实例成员, 只会影响这个对象本身,其他对象中的实例成员不会发生改变。对于实例成员只能通过对象来访问,不能通过类名进行访问,在实例方法中既可以访问实例变量,也 可以访问类变量。考试大收集整理

3. true 4. true 5. C 6.C

7. D来源:考试大

8. A C D 9.答:

public class Animal{ private String name; private double weight; private int length;

privateString sex; public void run(){

System.out.println(\来源:考试大 }

public void jump(){

System.out.println(\ }

public void walk(){

System.out.println(\ } }

10.答:

package mypackage.math;

class Rectangle{来源:www.examda.com private int length; private int width;

public Rectangle(int length,int width){

this.length=length;

this.width=width; }

public void set(int length,int width){ this.length=length;

this.width=width; }

public void get(){

System.out.println(\此长方形的长为\宽为\采集者退散 }

public int getLength(){ return length; }

public int getWidth(){

return width; }

public int calculatePerimeter(){考试大论坛 return 2*(length+width); }

public int calculateArea(){ return (length*width);

}

public void print(){

System.out.println(\此长方形的周长为\面积为\ } }

class Test{

public static void main(String [ ] args){

Rectangle myrectangle=new Rectangle(15,10); myrectangle.get();

myrectangle.print(); myrectangle.set(20,15);

System.out.println(\长方形的长是\宽是\myrectangle .getWidth()); myrectangle.print(); }

}四、方法与构造函数

1.Java的访问限定修饰符有几种,各自的访问权限是什么? 2.如何创建自己的包,如何引入包?

3.下面哪一个是类Myclass的构造函数?

class Myclass{www.Examda.CoM考试就到考试大 public void Myclass(){} public static Myclass(){} public Myclass(){}

public static void Myclass(){} }来源:www.examda.com

4. 判断:类体中private修饰的变量在本类中能访问,类生成的对象也能访问。() 5. 判断:一个类中,只能拥有一个构造器方法。()

6.Java中类成员的限定词有以下几种:private, public, ________, ________。其中,

________的限定的范围最大。

7、被关键字__________修饰的方法是不能被当前类的子类重新定义的方法来源:www.examda.com

8.设计Point类用来定义平面上的一个点,用构造函数传递坐标位置。编写测试类,在该类中实现Point类的对象。

9.编写程序说明静态成员和实例成员的区别。

10.设计雇员Employee类,记录雇员的情况,包括姓名、年薪、受雇时间,要求定义MyDate类作为受雇时间,其中包括工作的年、月、日,并用相应的方法对Employee类进行设置。编写测试类测试Employee类。要求使用自己的包。

参考答案 1.答:Java的访问限定修饰符有4种,分别使public、protected、private和默认修饰符。用public修饰的类或成员拥 有公共作用域,表明此类或类的成员可以被任何Java中的类所访问,是最广泛的作用范围。用protected修饰的变量或方法拥有受保护作用域,可以被 同一个包中所有的类及其他包中该类的子类所访问。用private修饰的变量或方法拥有私有作用域,只能在此类中访问,在其他类中,包括该类的子类也是不 允许访问的,private是最保守的作用范围。没有任何修饰符拥有默认访问权限(友好访问权限),表明此类或类的成员可以被同一个包中的其它类访问本文来源:考试大网

2.答:创建自己的包只要将package语句作为Java源文件的第一句就可以了。例 package myPackage; 声明创建了一个名为myPackage的包。采集者退散

Java使用import语句来引入包及其中的类。例如import myPackage.*;就引入了myPackage包中所有的类。

3.答:public Myclass(){}是类Myclass的构造函数。考试大收集整理 4. false 5. false

6. friendly、 protected、public 7.Private 8. 答: class Point { int x,y; Point(int a,int b) { x=a; y=b; } }

public class A

{ public static void main(String [ ] args) { Point p1,p2;

p1=new Point(10,10); p2=new Point(23,35);

} }

9.答: class StaticTest{ int i=5; static int j=5; void print(){

System.out.println(\ System.out.println(\ }

static void classprint(){

//System.out.println(\ System.out.println(\ } }

class Test{

public static void main(String [] args){ //System.out.println(StaticTest.i); System.out.println(StaticTest.j); //StaticTest.print(); StaticTest.classprint();

StaticTest st=new StaticTest(); System.out.println(st.j); System.out.println(st.j); st.print();

st.classprint(); } }

10.答:

package mypackage.employee; class MyDate{ private int year; private int month; private int day;

public MyDate(int year,int month,int day){ this.year=year; this.month=month; this.day=day; }

public int getYear(){ return year;

} }

public class Employee{

private String name;

private double salary; private MyDate hireDay;

public Employee(String name,double salary,MyDate day){ this.name=name;

this.salary=salary; hireDay=day; }

public void print(){

System.out.println(name+ \ }

public int hireYear(){ return hireDay.getYear(); }

}

class TestEmployee{

public static void main(String [] args){

Employee a=new Employee(\李明\ Employee b=new Employee(\王强\ a.print(); b.print();

}

} 五、类的继承

l.什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单重继承?什么是多重继承?

2.观察下面的程序片断,指出其中的父类和子类,以及父类和子类的各个域和方法。 class SuperClass采集者退散 {

int data;

voidsetData(intnewData) {

data=newData~ }

intgetData() {

return data~ }

}

class SubClass extends SuperClass {

int suhData;

void setSubData(intnewData) {

suhData=new Data;

}

intgetData() {

return subData;本文来源:考试大网 }

}

3.“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否正确?为什么?

4. 在Java程序中,通过类的定义只能实现单重继承() 5.下列哪些说法是正确的?

A、 Java 语言只允许单一继承本文来源:考试大网 B、 Java 语言只允许实现一个接口

C、 Java 语言不允许同时继承一个类并实现一个接口 D、 Java 语言的单一继承使得代码更加可靠 6.Java中所有类都是类________的子类。 7. 请写出下面程序的运行结果。

public class Test extends TT{ 考试大-全国最大教育类网站(www.Examda。com) public void main(String args[]){ Test t = new Test(\ }

public Test(String s){

super(s);

System.out.println(\ }

public Test(){

this(\ }

} www.Examda.CoM考试就到考试大 class TT{ public TT(){

System.out.println(\ }

public TT(String s){ this();

System.out.println(\ }

}

结果:________

8.父类的成员在子类中的访问权限由决定。

9.对象的使用包括引用对象的成员变量和方法。通过运算符就能实现对对象成员变量的访问和对象

10.Java是面向对象语言,对象是客观事物的,对象与之是一一对应的,它是很具体的概念。来源:www.examda.com 参考答案:

l.答:继承是面向对象程序设计中两个类之间的一种关系。当一个类获取另一个类中所有非私有的数据和操作的定义作为它自己的部分或全部成分时,就称这两个类之间具有继承关系。被继承的类称为父类或超类,继承了父类或超类的所有数据和操作的类称为子类。 面向对象程序设计中的继承,可使得程序结构更加清晰,降低了编码和维护的工作量。如果一个类只能有一个父类,则这种继承关系称为单重继承;如果一个类可以有多个父类,则这种继承关系称为多重继承。 2.答:

父类SuperClass

父类的域data来源:考试大的美女编辑们 父类的方法setData(),getData() 子类SubClass

子类的域data,subData

子类的方法setSubData(),setData(),getData()采集者退散

3.答:这种说法是错误的,因为子类不一定能继承父类的所有域和方法,它只能继承所有非私有的域和方法。如果子类在继承之外自己定义的域和方法数目小于父类中私有成员的数目,则子类的域和方法的数目小于父类的域和方法的数目|考试大收集整理 4. true本文来源:考试大网 5. A D 6. Object 7. 答: What a pleasure! I am Tom

How do you do? 8. 访问权限修饰符

9. “.”

10.软件模型|考试大收集整理六、重载与多态 1.判断:接口中的所有方法都没有被实现。()

2.方法重载是指 ( )

A.两个或两个以上的方法取相同的方法名,但形参的个数或类型不同考试大论坛 B.两个以上的方法取相同的名字和具有相同的参数个数,但形参的类型可以不同 C.两个以上的方法名字不同,但形参的个数或类型相同

D.两个以上的方法取相同的方法名,并且方法的返回类型相同

3.什么是方法的覆盖?方法的覆盖与域的隐藏有何不同?与方法的重载有何不同? 4.解释this和super的意义和作用。考试大-全国最大教育类网站(www.Examda。com) 5.什么是多态?面向对象程序设计为什么要引人多态的特性?使用多态有什么优点? 6.Java程序如何实现多态?有哪些方式?

7.根据下面的要求编程实现复数类ComplexNumber。 (1)复数类ComplexNumber的属性 ·m_dRealPart实部,代表复数的实数部分。

·m_dlmaginPart虚部,代表复数的虚数部分。

(2)复数类ComplexNumber的方法来源:www.examda.com

·ComplexNumber()构造方法,将实部、虚部都置为0。 ·ComplexNumber(doubler,doublei)构造方法,创建复数对象的同时完成复数的实部、虚部的初始化;r为实部的初值,i为虚部的初值。

·getRealPart()获得复数对象的实部。

·getlmaginaryPart()获得复数对象的虚部。 ·setRealPart(doubled)把当前复数对象的实部设置为给定的形参的数字。www.Examda.CoM考试就到考试大 ·setlmaginaryPart(doubled)把当前复数对象的虚部设置为给定形参的数字。 ·complexAdd(ComplexNumberc)当前复数对象与形参复数对象相加,所得的结果也是复数值,返回给此方法的调用者。

·complexAdd(doublec)当前复数对象与形参实数对象相加,所得的结果仍是复数值,返回给此方法的调用者。

·complexMinus(ComplexNumberc)当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者。

8.什么是接口?为什么要定义接口?接口与类有何异同?来源:考试大的美女编辑们 9.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法? 10.接口是否可以被继承?阅读下面的代码,试写出SubInterface中的抽象方法。 interface SupInterface {

public abstract int supMethod(); }

interface SubInterface extends SupInterface {

public abstract string subMethod(); }

参考答案:

1. true来源:www.examda.com

2.A

3.答:子类重新定义父类中已经存在的方法,称为方法的覆盖。注意:方法覆盖与域的隐藏不同。子类重新定义父类已有的域,并不能完全取代它从父类那 里继承的同名的域,这个域仍然占用子类的内存空间,在某些情况下会被使用;而当子类重新定义父类的方法时,从父类那里继承来的方法将被新方法完全取代,不 再在子类的内存空间中占一席之地。与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法。

4.答:关键字this指代当前类的当前对象,关键字super指代当前类的直接父类对象。考试大-全国最大教育类网站(www.Examda。com)

5.答:一个类中存在多个同名的方法,称为多态。把抽象功能和目的相同,而具体实现因不同情况而异的方法命名为同名方法,符合面向对象程序设计中抽象、提升概念,封装、隐藏细节的特点,从而提高了程序的简洁性和可读性,降低了类和程序模块直接的相互耦合和依赖。

6.答:Java程序通过覆盖和重载两种方式来实现多态。覆盖是子类重新定义父类中已有的方法,重载是在一个类内部定义与已存在的方法同名但是参数列表不同的方法。来源:考试大

7.答:

public class ch5_e5_12 {

public static void main(String args[])

{

ComplexNumber cNumber_1 = new ComplexNumber(3,-5);

ComplexNumber cNumber_2 = 本文来源:考试大网 new ComplexNumber(2,2);

double d = 10.0;

System.out.println(cNumber_1.toString() + \加 \ + cNumber_2.toString() + \等于 \

+ cNumber_1.complexAdd(cNumber_2).toString()); System.out.println(cNumber_1.toString() + \加 \ + d + \等于 \

+ cNumber_1.complexAdd(d).toString());

System.out.println(cNumber_1.toString() + \减 \ + cNumber_2.toString() + \等于 \

+ cNumber_1.complexMinus(cNumber_2).toString()); System.out.println(cNumber_1.toString() + \减 \ + d + \等于 \

+ cNumber_1.complexMinus(d).toString());

System.out.println(cNumber_1.toString() + \乘 \

+ cNumber_2.toString() + \等于 \考试大-全国最大教育类网站(www.Examda。com) + cNumber_1.complexMulti(cNumber_2).toString()); System.out.println(cNumber_1.toString() + \乘 \ + d + \等于 \

+ cNumber_1.complexMulti(d).toString()); }

}

class ComplexNumber { //域

private double m_dRealPart; private double m_dImaginPart; //构造方法

ComplexNumber()来源:www.examda.com {

m_dRealPart = 0.0; m_dImaginPart = 0.0; }

ComplexNumber(double r,double i) {

m_dRealPart = r; m_dImaginPart = i;

}

ComplexNumber(ComplexNumber c) {

m_dRealPart = c.getRealPart(); m_dImaginPart = c.getImaginaryPart(); }

//get,set方法 double getRealPart() {来源:考试大 return m_dRealPart; }

double getImaginaryPart() {

return m_dImaginPart; }

void setRealPart(double d) {

m_dRealPart = d; }

void setImaginaryPart(double d) {

m_dImaginPart = d; }

//复数运算方法

ComplexNumber complexAdd(ComplexNumber c) {

return new ComplexNumber(

this.m_dRealPart + c.getRealPart(),来源:考试大的美女编辑们

this.m_dImaginPart + c.getImaginaryPart()); }

ComplexNumber complexAdd(double c) {

return new ComplexNumber(

this.m_dRealPart + c, this.m_dImaginPart); }

ComplexNumber complexMinus(ComplexNumber c) {

return new ComplexNumber(

this.m_dRealPart - c.getRealPart(), this.m_dImaginPart - c.getImaginaryPart()); }

ComplexNumber complexMinus(double c) {来源:www.examda.com return new ComplexNumber(

this.m_dRealPart - c, this.m_dImaginPart); }

ComplexNumber complexMulti(ComplexNumber c)

{

return new ComplexNumber(

this.m_dRealPart * c.getRealPart()

- this.m_dImaginPart * c.getImaginaryPart(), this.m_dRealPart * c.getImaginaryPart()

+ this.m_dImaginPart * c.getRealPart());

}

ComplexNumber complexMulti(double c)来源:考试大的美女编辑们 {

return new ComplexNumber(

this.m_dRealPart * c, this.m_dImaginPart * c); }

//toString()

public String toString()

{

return \ + m_dImaginPart + \ }

}来源:考试大

8.答:接口是用来实现类间多重继承功能的结构。接口与类相似,但是接口中只能包括常量和抽象方法。定义接口相当于定义了一组抽象的功能、属性集合,可以使了ava程序的类层次结构更加合理,并实现多重继承。来源:www.examda.com

9.答:使用关键字implements可以定义类实现某接口。实现某接口的类如果不是抽象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以不必实现该接口中的所有抽象方法。

10.答:接口可以被继承。本文来源:考试大网

SubInterface中的抽象方法有:public abstract int supMethod();和public abstract string subMethod();两个。 七、Java 常用类库介绍 1.指出下列陈述是对还是错,并做出解释。

(1)当String对象用= = 比较时,如果String包括相同的值则结果为true。 (2)一个String类的对象在其创建后可被修改。本文来源:考试大网 2.对于下列描述,各写出一条语句完成要求的任务 (1)比较s1中的串和s2中的串的内容的相等性; (2)用+=向串s1附加串;

(3)判断s1中串的长度;来源:考试大 3.说明capacity()与length()用法上的差异?

4.如果ch为StringBuffer对象,ch=“Java Apple”,下列结果为何? (1)ch.insert(3,’p’)(2)ch.append(“Basic”)

(3)ch.setlength(5)(4)ch.reverse()来源:考试大的美女编辑们 5.Math类中提供用来常数π和e的静态属性分别是什么? 6.下面关于Vector类的说法正确的是()

(1)类Vector在java.util包中。 (2)一个向量(Vector)对象存放的是一组有序的对象。 (3)一个向量(Vector)对象大小可以根据存放的元素个数的增加而自动增加。

(4)一个向量(Vector)对象中每个元素可以是不同类型的对象。

7.有三个字符串,编写程序找出其中最大者。来源:www.examda.com

8.编写一个程序,设定一个有大小写字母的字符串,先将字符串的大写字符输出,再将字符串中的小写字符输出。

9.设定5个字符串,要求只打印那些以字母“b”开头的串,编写程序完成。

10.设定一个有大小写字母的字符串和一个查找字符,使用类 String方法IndexOf()来判断在该字符串中该字符出现的次数。 参考答案

1.答:本文来源:考试大网

(1)错。用= =操作符比较String对象实际上是判断它们在内存中是否为同一对象,并不是判断它们的值是否相同。

(2)错。String类的对象是常量。它们被创建后不可被修改。 2.答:

(1)s1.equals(s1,s2);

(2)s1+=s2;

(3)s1.length();来源:www.examda.com

3.答:capacity()返回字符串对象的当前缓冲区的长度,length()返回字符串对象字符的长度。考试大收集整理 4.答:

(1)结果:Javpa Applet

(2)结果:Javpa AppletBasic

(3)结果:ch长度变为5考试大论坛 (4)结果:apvaJ 5.答:PI、 E 6.答:(3)

7.

public class max1

{

public static void main(String args[]) {

String s1= \ String s2= \ String s3= \ String s;

if(s1.compareTo(s2)<0) s=s2; else s=s1;

if(s.compareTo(s3)<0) s=s3;

Systrm.out.println(\ } } 8.

public class out

{

public static void main(String args[]) {

String s1= \

StringBuffer bufup=new StringBuffer();

StringBuffer buflow=new StringBuffer(); for(int I=0;I

{if(s1.charAt(i)<97)

{bufup.append(s1.charAt(i)); bufup.append(' ' ); } else {

buflow.append(s1.charAt(i)); buflow.append('' ); } }

System.out.println(\

System.out.println(\ System.out.println(\ } } 9.

public class prin_b

{ public static void main(String args[]) {

String s1=\ String s2=\ String s3=\ String s4=\ String s5=\ if(s1.indexOf('b')= =0) System.out.println(s1); if(s2.indexOf('b')= =0) System.out.println(s2); if(s3.indexOf('b')= =0) System.out.println(s3); if(s4.indexOf('b')= =0) System.out.println(s4); if(s5.indexOf('b')= =0) System.out.println(s5); } } 10.

public class ppp

{

public static void main(String args[]) {

String s1=\int num=0;

for (int i=0;i {i=s1.indexof('e',i); num++; }

System.out.print(\ if(num= =0)

System.out.println(\ else System.out.println(num); }

}八、Java异常处理及输入输出流简介 1.列出5个常见的异常。

2.写出Java语言的异常处理机制的优点。

3.为什么异常处理技术不应该用于常规的程序控制?

4.引起异常产生的条件是什么?考试大-全国最大教育类网站(www.Examda。com) 5.异常没有被捕获将会发生什么?

6.编写一个程序,以说明catch(Exception e)如何捕获各种异常。

7.下面的代码段中finally语句块会被执行吗?考试大-全国最大教育类网站(www.Examda。com)

public class ExceptionExam3 {

public static void main(String [] args) {

try {

int [] a=new int[3]; System.exit(0); }

catch(ArrayIndexOutOfBoundsException e) {System.out.println(\发生了异常\ finally

{System.out.println(\ }

}

8.throws的作用是什么?

9.应在程序的什么地方使用异常处理? 10.下面的代码有什么错误吗?

class ExceptionExam{…} throw new ExceptionExam();

11.异常类型匹配的处理方式。程序功能:首先输出“这是一个异常处理的例子”,然后

在你程序中主动地产生一个 ArithmeticException 类型被0 除而产生的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException类的对象e的方法getMessage 给出异常的具体类型并显示出来。

12.根据所给创建自定义异常类的使用格式,编写一个自定义异常的小程序。 13.什么叫流?流式输入输出有什么特点?来源:考试大的美女编辑们 14.Java流被分为字节流、字符流两大流类,两者有什么区别? 15.File类有哪些构造函数和常用方法?

16.利用文件输入输出流编写一个实现文件拷贝的程序,源文件名和目标文件名通过命令行参数传入。

17.编写一个程序,在当前目录下创建一个子目录test,在这个新创建的子目录下创建一个文件,并把这个文件设置成只读。

18.位置指针的作用是什么?RandomAccessFile类提供了哪些方法实现对指针的控制? 19.编写一个程序,从键盘输入一串字符,统计这串字符中英文字母、数字、其他符号的字符数。

20.编写一个程序,从键盘输入一串字符,从屏幕输出并将其存入a.txt文件中。采集者退散

21.编写一个程序,从键盘输入10个整数,并将这些数据排序后在标准输出上输出。 参考答案

1.答:内存耗尽、数组下标超出边界、被0除、非法的方法参数、算法溢出处。来源:考试大的美女编辑们 2.答:(1)Java通过面向对象的方法进行异常处理,把各种异常事件进行分类,体现了良好的层次性,提供了良好的接口,这种机制对于具有动态特 性的复杂提供了强有力的控制方式。(2)Java的异常处理机制使得处理异常的代码和“常规”代码分开,减少了代码的数量,增强了程序的可读性。(3) Java的异常处理机制使得异常事件可以沿调用栈自动向上传播,而不是C语言中通过函数的返回值来传播,这样可以传递更多的信息,并且简化了代码的编写。 (4)由于把事件当成事件处理,利用类的层次性我们可以把多个具有相同父类的异常统一处理,也可以区分不同的异常分别处理,使用非常灵活。

3.答:a. 异常处理用于不经常发生但通常导致程序终止的情况,因此要求编程人员为编译器的优化执行实现异常处理。b. 常规控制结构的控制流程通常比异常的更为清晰、交流更高。c. 在发生异常,并且没有释放异常发生之前分配的资源时,堆栈是展开的,所以会出现一些问题。d.“额外的”异常会妨碍真正错误类型的异常。这种使程序员更难 以跟踪大量的异常。

4.答:异常产生的方式有3种。第一种是在某些内部错误时,Java虚拟机可以产生异常,该异常不在你的程序控制范围内,通常不作处理。第二种是由程序代码中的错误引起,这种异常需要你的程序处理。第三种是通过使用throw语句手动生成的异常。

5.答:未捕获的异常最终会导致程序非正常终止。考试大收集整理考试大-全国最大教育类网站(www.Examda。com) 6.public class ExceptionExam {

public static void main(String [] args) { try {

int i=0;

i=3/i;//将产生算术异常。

}

catch(ArithmeticException e)//找到了匹配的异常,执行该catch块。 {

System.out.println(\发生了ArithmeticException异常\

}

catch(AarryIndexOutOfBoundsException e)//不是匹配的异常,且不会再捕获 //异常,如果发生数组索引超出范围所产生的异常,将执行该catch块。 {

System.out.println(\发生了AarryIndexOutOfBoundsException异常\

}

catch(Exception e)

//前两个catch块均无法捕获try块中发生的异常时,才会执行该catch块。 {

System.out.println(\发生了异常\

}

finally

{ System.out.println(\执行d Finally\ }

}

7.答:无论是出于何种原因,只要执行离开try/catch代码块,就会执行finally代码块。即无论try是否正常结束,都会执行 finally定义的最后的代码。如果try代码块中的任何代码或它的任何catch语句从方法返回,也会执行finally代码块。但本题中在try代 码块中执行了“System.exit(0);”语句,执行了这一语句后,Java虚拟机(JVM)将被终止。那么finally语句块一定不会被执行。来源:www.examda.com

8.答:在某些情况下,如果一个方法产生自己不处理或无法处理的异常,它就必须在throws子句中声明该异常。

9.答:通常,可以采用两种方式来报告错误:返回值和异常。在Java中异常处理很常用,虽然返回错误代码在某些情况下是一种有效的方式,但是异常处理可以提供强大的结构化方法来处理异常。所以需要处理代码中的错误时就可以采用异常的方法进行处理。来源:考试大的美女编辑们

10.答:ExceptionExam不是继承(扩展)Throwable的子类,只有Throwable的子类可以由throw抛出。所以,这一段代码会出错。 11.

public class ExceptionExam1 {

public static void main(String [] args) { try {int i=0; i=3/i;

}

catch(ArithmeticException e) {

System.out.println(\异常是:\

}

finally {

System.out.println(\语句被执行\

} }

}

注意:如果在catch 语句中声明的异常类是Exception,catch 语句也能正确地捕获,这是因为Exception 是ArithmeticException 的父类。如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception。 12.

class Excp1 extends Exception {}

class Excp2 extends Excp1 {}

public class ExceptionExam7 {

public static void main(String [] args) throws Exception { try

{

throw new Excp2(); }

catch(Excp2 e)

{

System.out.println(\ throw new Excp1(); }

catch(Excp1 e)

{

System.out.println(\ throw new Exception(); }

catch(Exception e) {

System.out.println(\ }

finally {

System.out.println(\ } } }

说明:自定义异常类,关键是选择继承的超类——必须是Exception或者其子类。用异常代表错误,而不要再使用方法返回值。 13.答:所谓流是指同一台计算机或网络中不同计算机之间有序运动着的数据序列,Java把这些不同来源和目标的数据都统一抽象为数据流。数据流可分为输入流和输出流,输入流代表从其他设备流入计算机的数据序列,输出流代表从计算机流向外部设备的数据序列。www.Examda.CoM考试就到考试大

流式输入输出的特点是数据的获取和发送沿数据序列的顺序进行,即每一个数据都必须等待排在它前面的数据,等前面的数据读入或送出之后才能被读写。所以流和队列一样,只能以“先进先出”的方式对其中的数据进行读写,而不能随意选择读写的位置。

14.答:两者都作为Object类的直接子类,基本输入流(无效Stream)和基本输出流(OutputStream)是处理以8位字节为基本单位的字节流类;Reader和Writer类是专门处理16位字符流的类。

15.答:构造函数有:本文来源:考试大网

(1)public File(String pathname):创建一个对应于参数pathname的File类对象。参数pathname是包含目录和文件名的字符串。如果没有文件名,则代表目录。

(2)public File(String parent , String child):该构造函数将pathname分成两部分parent和child,参数parent表示目录或文件所在路径,参数child表示目录或文件名称。

(3)public File(File parent, String child):该构造函数与上面一个不同在于将parent的参数类型由String变为File,代表parent是一个已经创建的File类文件对象(指向目录)。 常用方法有:

(1)public boolean canWrite( ):返回文件是否可写。

(2)public boolean canRead( ):返回文件是否可读。

(3)public boolean createNewFile( ):当文件不存在时创建文件。 16.

import java.io.*;

class CopyFile{

public static void main(String[] args) { String file1,file2 ; int ch = 0 ; try {

file1=args[0]; file2=args[1];

File无效Stream fis = new File无效Stream(file1); FileOutputStream fos=new FileOutputStream(file2);

while ((ch=fis.read())!=-1) fos.write(ch); fis.close(); fos.close(); }

catch(FileNotFoundException e){

System.out.println(\源文件:未找到!\ }catch(ArrayIndexOutOfBoundsException e){ System.out.println(\缺少运行参数!\ System.exit(-1);

}

catch (IOException e){

System.out.println(e.toString()); } }

}

17.答:

import java.io.*;

public class NewFile{

public static void main(String args[]){

File f=new File(\

if(f.exists()&&f.isDirectory())

System.err.println(\目录:\已经存在!\else{

if(f.mkdir()){

System.out.println(\目录\创建结束!\ File f2=new File(f,\ try{

f2.createNewFile(); f2.setReadOnly(); }catch(IOException e){

System.out.println(e.toString()); }

System.out.println(\文件:\创建结束!\ }

else

System.out.println(\目录\创建失败!\

} } }

18.答:要实现对文件的随机读取,也就是在文件的任何位置执行读写数据的操作,需要一个指针来指定读写的位置。在创建 RandomAccessFile类对象的同时,系统自动创建了一个指向这个文件开头的指针,当执行读写操作后,指针自动指向被读写数据之后的第一个字节 处。指针初始值是0,每读/写一个字节,指针自动增加1。RandomAccessFile类提供了一些控制指针移动的方法。

public long getFilePointer();获取当前指针指向文件的位置。考试大论坛 pulbic void seek(long pos);将指针移动到参数pos指定的位置。

public int skipBytes(int n);指针从当前位置向后移动n个字节位置,并返回指针实际移动的字节数。 19.答: import java.io.*;

public class Count{

public static void main(String[] args) {

int x=0,y=0,z=0;

int ch; try{

while((ch=System.in.read())!='\\r'){

if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')

x++;

else if(ch>='0'&&ch<='9') y++; else z++;

}

}catch(IOException e){

System.out.println(e.toString()); }

System.out.println(\英文字母:\System.out.println(\数字字符:\

System.out.println(\其它字符:\ } }

20.答: import java.io.*;

public class InFile{

public static void main(String[] args) {

int ch;

try{

FileOutputStream out=new FileOutputStream(\ while((ch=System.in.read())!='\\r'){ System.out.write(ch); out.write(ch); }

out.close();

System.out.write('\\n'); }catch(IOException e){

System.out.println(e.toString()); }

System.out.println(\输出至文件完毕!\ } }

21.答: import java.io.*;

public class Sort{

public static void main(String args[]) {

int a[]=new int[10];

byte b[]=new byte[10]; int t;

String str;

System.out.println(\请输入10个整数:\

try{

for(int i=0;i<10;i++)

{System.out.print(\ System.in.read(b); str=new String(b); str=str.trim();

a[i]=Integer.parseInt(str); }

}catch(IOException e){ System.out.println(e.toString()); }

catch(NumberFormatException e){ System.out.println(e.toString()); }

for(int i=0;i<9;i++) for(int j=i+1;j<10;j++)

{

if(a[i]>a[j]){ t=a[i]; a[i]=a[j];

a[j]=t; }

}

for(int i=0;i<10;i++)

System.out.println(a[i]+\

}

}九、Java Applet概述

1.下列方法中,哪一个不是Applet的基本方法() A、init()B、run()C、stop()D、start()

2.在Java中判定Applet的来源的方法有()

A、getcodebase()B、get文档base()www.Examda.CoM考试就到考试大 C、getCodeBase()D、get文档Bade()

3.下面关于Applet的说法正确的是

A、 Applet也需要main方法www.Examda.CoM考试就到考试大 B、 Applet必须继承自javawt.Applet C、 Applet能访问本地文件 D、 Applet程序不需要编译 4.Applet类的直接父类是( ) A.Component类

B.Container类来源:考试大

C.Frame类 D.Panel类

5.判断:一个Applet编译后的类名是Test.class,运行此小程序的命令是Java Test。() 6.编写同时具有Applet与Application的特征的程序。具体方法是:作为Application要

定义main()方法,并且把 main()方法所在的类定义一个类。为使该程序成为一个Applet,main()方法所在的这个类必须继承Applet类或JApplet类。www.Examda.CoM考试就到考试大 7.在第一次加载Applet时,默认最先执行的方法是________。

8.调用________方法可以把HTML网页中的参数传递给Applet。来源:考试大 9.使用________方法可以从Web站点上下载声音,并调用play()方法和loop()方法播放它们。

10.Java程序可以通过调用哪个方法完成重画任务?考试大收集整理 参考答案

1.B来源:考试大 2.C D 3. C 4. C 5. false 6. 主

7.init()

8.getParameter() 9.getAudioClip()

10.repaint()十一、图形界面—窗体简介

1.判断:每个applet上只能使用一种布局管理器。()

2.判断:使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上。()

3.判断:在使用BorderLayout时,最多只能包含5个组件。()来源:www.examda.com 4. 判断:使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上。()

5. __________用于安排容器上的GUI组件。

6. GUI是_______________的缩写。

7. 当释放鼠标按键时,将产生________________事件。考试大-全国最大教育类网站(www.Examda。com)

8.哪个布局管理器使用的是组件的最佳尺寸( ) A.FlowLayoutB.BorderLayout C.GridLayoutD.CardLayout

9.Frame的默认的布局管理器是下列哪一个( ) A.FlowLayoutB.BorderLayout

C.GridLayoutD.CardLayout本文来源:考试大网

10.编写程序,创建下面的GUI(不必为各组件提供功能)。考试大收集整理 参考答案 1: false 2:true 3:true

4.true

5:版面管理器 6. 图形用户界面 7. mouseReleased 8. C 9. B 10.

import javawt.*;

public class Chp9_3_A extends Frame{ TextField t=new TextField();

String[] op={\ Button[] btn=new Button[16]; Panel p=new Panel(); public Chp9_3_A(){

setLayout(new BorderLayout()); p.setLayout(new GridLayout(4,4)); for(int i=0;i

btn[i]=new Button(op[i]); p.add(btn[i]); }

add(t,BorderLayout.NORTH);

add(p,BorderLayout.CENTER); setSize(400,300); }

public static void main(String[] args){

new Chp9_3_A().setVisible(true); }

}十二、常用组件之一________命令按钮与标签框 1.判断:标签是是一个容器。()

2.判断:在Swing用户界面的程序设计中,容器可以被添加到其它容器中去。() 3. 用户不能修改的文本称为_______。

4.关于awt和swing说法正确的是:来源:考试大 A、 awt在不同操作系统中显示相同的风格。 B、 swing在不同的操作系统中显示相同的风格 C、 javawt的子类

D、 awt和swing都支持事件模型

5. 下列_________用户图形界面组件在软件安装程序中是常见的。 a.滑块

b.进度条来源:考试大 c.对话框 d.标签

6. 包含可单击按钮的类的Java类库是__________。 a.AWT b.Swing

c.二者都有来源:www.examda.com

d.二者都没有

7. 下面的__________用户界面组件不是容器。

a.JScrollPane

b.JFrame考试大-全国最大教育类网站(www.Examda。com) c.JWindows

d.JScrollBar

8.创建下面的GUI,颜色列表框为红色、绿色和蓝色(不必为各组件提供功能)。考试大收集整理 参考答案

1.false 2.true 3.标签

4.B D来源:www.examda.com

5.B 6.C

7.D

8. 参考程序如下:来源:考试大的美女编辑们 import javawt.*;

public class Chp9_3_B extends Frame{ Choice ch;

Checkbox bg,fg;

Button btnOK,btnCancel; Panel p,p1,p2;

public Chp9_3_B(){

p=new Panel();

p.setLayout(new GridLayout(2,1)); p1=new Panel(); p2=new Panel();

p1.setLayout(new FlowLayout());

p2.setLayout(new FlowLayout()); ch=new Choice(); ch.add(\红色\ch.add(\绿色\

ch.add(\蓝色\

bg=new Checkbox(\背景\ fg=new Checkbox(\前景\

p1.add(bg); p1.add(fg);

btnOK=new Button(\确定\btnCancel=new Button(\取消\

p2.add(btnOK); p2.add(btnCancel); p.add(p1);

p.add(p2);

add(ch,BorderLayout.NORTH); add(p,BorderLayout.CENTER); setSize(400,300); }

public static void main(String[] args){ new Chp9_3_B().setVisible(true);

}

} 十三、常用组件之二 _______单行文本框与多行文本框,单选框和复选框 1. 判断:列表对象总包含滚动条。() 2.判断:面板的默认管理器是BorderLayout。

3.____________类用于创建一组单选按钮。来源:考试大

4. 欲编写如下图的一个界面,用于显示用户指定的图像: 如果在区域A中只能放置一个

AWT组件,从各组件的本来功能角度考虑,最好使用哪种组件: A、 TextArea

B、 Panel 来源:www.examda.com C、 Applet D、 Canvas

5.Java应用程序中的默认外观是_________。 A.Motif

B.Windows C.METAl

6. 创建下面的GUI,要求在文本框中输入分数,单击“求和”按钮后在结果文本框中显示总分。

7.编写一个将华氏温度转换为摄氏温度的程序。应从键盘输入华氏温度,然后通过文本显示转换后的摄氏温度。使用下面的公式进行温度转换:

摄氏温度=5/9Χ(华氏温度-32)考试大-全国最大教育类网站(www.Examda。com) 8.编写一个程序,使用户能够使用鼠标在applet中绘制一个矩形。按住鼠标左键,确定矩形的左上角,然后拖动鼠标,在需要的位置(即矩形右下角)释放鼠标。另外,在状态栏中显示矩形面积。 参考答案 1.false 2.true

3. CheckboxGroup 4.D 5. C

6. 参考程序如下:

import javawt.*;来源:考试大 import javawt.event.*;

public class Chp9_3_C extends Frame implements ActionListener{ TextField textField1,textField2,textField3; Button button1=new Button(\求和\ Panel panel1,panel2;

public Chp9_3_C(){采集者退散

textField1=new TextField(); textField2=new TextField(); textField3=new TextField(); panel1=new Panel();

panel2=new Panel();

panel1.setLayout(new GridLayout(3,2)); panel2.setLayout(new FlowLayout()); panel1.add(new Label(\数学: \ panel1.add(textField1);

panel1.add(new Label(\英语: \ panel1.add(textField2);

panel1.add(new Label(\总分: \ panel1.add(textField3);

panel2.add(button1);

add(panel1,BorderLayout.CENTER); add(panel2,BorderLayout.SOUTH); button1.addActionListener(this); setSize(300,200); setVisible(true); }

public static void main(String[] args){ new Chp9_3_C(); }

public void actionPerformed(ActionEvent e){

int n1,n2,sum;

n1=Integer.parseInt(textField1.getText()); n2=Integer.parseInt(textField2.getText()); sum=n1+n2;

textField3.setText(\

} }

6.参考程序如下: import javawt.*;

import javawt.event.*;

public class Chp9_3_D extends Frame{ TextField textField1,textField2; Button button1;

public Chp9_3_D(){

textField1=new TextField(30); textField2=new TextField(30); button1=new Button(\转换\ setLayout(new FlowLayout()); add(new Label(\华氏温度:\

add(textField1);

add(new Label(\摄氏温度:\ add(textField2);

textField2.setEditable(false); add(button1); setSize(400,300); pack();

button1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ button1_actionPerformed(e); } });

addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); }

}); }

public static void main(String[] args){ new Chp9_3_D().setVisible(true); }

private void button1_actionPerformed(ActionEvent e){ double d=Double.parseDouble(textField1.getText()); double h=5.0/9.0*(d-32); textField2.setText(\

} }

7.参考程序如下: import javapplet.Applet; import javawt.*;

import javawt.event.*;

public class Chp9_3_E extends Applet implements MouseListener,MouseMotionListener{ int x1,y1,x2,y2; public void init(){

addMouseListener(this);

addMouseMotionListener(this); }

public void paint(Graphics g){ g.drawRect(x1,y1,x2,y2);

int area=Math.abs(x2-x1)*Math.abs(y2-y1); showStatus(\矩形面积: \

}

//implementation of MouseListener

public void mousePressed(MouseEvent e){

x1=e.getX();

y1=e.getY(); }

public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} //implementation of MouseMotionEvent public void mouseDragged(MouseEvent e){ x2=e.getX(); y2=e.getY(); repaint();

}

public void mouseMoved(MouseEvent e){} }

合肥工业大学自考Java基础知识

来源:考试大 2009/11/25 【考试大:中国教育考试第一门户】 模拟考场 视频课程 字号:T T

1、 作用域public,private,protected,以及不写时的区别 答:区别如下:

作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时默认为friendly

2、ArrayList和Vector的区别,HashMap和Hashtable的区别 答:就ArrayList与Vector主要从二方面来说.

一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 就HashMap与HashTable主要从三方面来说。

一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现

二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的

三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 3、char型变量中能不能存贮一个中文汉字?为什么?

答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的

4、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify

5、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 答:父类: package test;

public class FatherClass {

public FatherClass() {

System.out.println(\Create\} } 子类: package test;

import test.FatherClass;

public class ChildClass extends FatherClass {

public ChildClass() {

System.out.println(\Create\}

public static void main(String[] args) {

FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass(); } }

输出结果:

C:>java test.ChildClass FatherClass Create FatherClass Create ChildClass Create 6、内部类的实现方式? 答:示例代码如下: package test;

public class OuterClass {

private class InterClass {

public InterClass() {

System.out.println(\Create\} }

public OuterClass() {

InterClass ic = new InterClass(); System.out.println(\Create\}

public static void main(String[] args) {

OuterClass oc = new OuterClass(); } } 输出结果:

C:>java test/OuterClass InterClass Create OuterClass Create 再一个例题:

public class OuterClass { private double d1 = 1.0; //insert code here }

You need to insert an inner class declaration at line 3. Which two inner class declarations are

valid?(Choose two.) A. class InnerOne{

public static double methoda() {return d1;} }

B. public class InnerOne{

static double methoda() {return d1;} }

C. private class InnerOne{ double methoda() {return d1;} }

D. static class InnerOne{

protected double methoda() {return d1;} }

E. abstract class InnerOne{ public abstract double methoda(); }

说明如下:

一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 故 A、B 错 二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。 故 D 错

三.非静态内部类的非静态成员可以访问外部类的非静态变量。 故 C 正确 四.答案为C、E

7、垃圾回收机制,如何优化程序? 答:略

8、float型float f=3.4是否正确?

答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 9、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)? 答:Collection FrameWork如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)

Map提供key到value的映射

10、Java中异常处理机制,事件机制? 11、JAVA中的多形与继承? 答:略

12、抽象类与接口?

答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。

13、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示? 答:Server端程序: package test; import java.net.*; import java.io.*; public class Server {

private ServerSocket ss; private Socket socket;

private BufferedReader in; private PrintWriter out; public Server() { try {

ss=new ServerSocket(10000); while(true) {

socket = ss.accept();

String RemoteIP = socket.getInetAddress().getHostAddress(); String RemotePort = \

System.out.println(\client come in!IP:\in = new BufferedReader(new

InputStreamReader(socket.getInputStream())); String line = in.readLine();

System.out.println(\send is :\+ line); out = new PrintWriter(socket.getOutputStream(),true); out.println(\Message Received!\out.close(); in.close(); socket.close(); }

}catch (IOException e) {

out.println(\} }

public static void main(String[] args) {

new Server(); }

};

Client端程序: package test; import java.io.*; import java.net.*; public class Client {

Socket socket; BufferedReader in; PrintWriter out;

public Client() { try {

System.out.println(\to Connect to 127.0.0.1:10000\socket = new Socket(\System.out.println(\Server Connected!\System.out.println(\enter some Character:\BufferedReader line = new BufferedReader(new InputStreamReader(System.in));

out = new PrintWriter(socket.getOutputStream(),true); out.println(line.readLine());

in = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(in.readLine()); out.close(); in.close(); socket.close(); }catch(IOException e) {

out.println(\} }

public static void main(String[] args) {

new Client(); } };

14、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在COLLECTION框架中,实现比较要实现什么样的接口? 答:用插入法进行排序代码如下 package test; import java.util.*; class InsertSort {

ArrayList al;

public InsertSort(int num,int mod) {

al = new ArrayList(num); Random rand = new Random();

System.out.println(\ArrayList Sort Before:\ for (int i=0;i {

al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1)); System.out.println(\} }

public void SortIt() {

Integer tempInt; int MaxSize=1;

for(int i=1;i

tempInt = (Integer)al.remove(i);

if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue()) {

al.add(MaxSize,tempInt); MaxSize++;

System.out.println(al.toString()); } else { for (int j=0;j { if

(((Integer)al.get(j)).intValue()>=tempInt.intValue()) {

al.add(j,tempInt); MaxSize++;

System.out.println(al.toString()); break; } } } }

System.out.println(\ArrayList Sort After:\for(int i=0;i

System.out.println(\} }

public static void main(String[] args) {

InsertSort is = new InsertSort(10,100); is.SortIt(); } }

JAVA类实现序例化的方法是实现java.io.Serializable接口

Collection框架中实现比较要实现Comparable 接口和 Comparator 接口

15、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如\我ABC\,应该截为\我AB\,输入\我ABC汉DEF\,6,应该输出为\我ABC\而不是\我ABC+汉的半个\。 答:代码如下: package test; class SplitString {

String SplitStr; int SplitByte;

public SplitString(String str,int bytes) {

SplitStr=str; SplitByte=bytes;

System.out.println(\String is:′\ }

public void SplitIt() {

int loopCount;

loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split Byte+1);

System.out.println(\Split into \for (int i=1;i<=loopCount ;i++ ) {

if (i==loopCount){

System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length())); } else {

System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte))); } } }

public static void main(String[] args) {

SplitString ss = new SplitString(\中dd文dsaf中男大3443n中国43中国人 0ewldfls=103\ss.SplitIt(); } }

16、JAVA多线程编程。 用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。 答案:略

17、STRING与STRINGBUFFER的区别。

答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。

本文来源:https://www.bwwdw.com/article/hh4r.html

Top