JAVA语言基础复习题FXT2522431112文档格式.docx
《JAVA语言基础复习题FXT2522431112文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA语言基础复习题FXT2522431112文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
通常的动态联编将生效。
引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。
7、作用域public,private,protected,以及不写时的区别。
区别如下:
作用域
当前类
同一package
子孙类
其他package
public
√
√
protected
×
friendly
private
不写时默认为friendly。
8、error和exception有什么区别?
error
表示恢复不是不可能但很困难的情况下的一种严重问题。
比如说内存溢出。
不可能指望程序能处理这样的情况
exception
表示一种设计或实现问题。
也就是说,它表示如果程序运行正常,从不会发生的情况。
9、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能。
10、接口是否可继承接口?
抽象类是否可实现(implements)接口?
抽象类是否可继承实体类(concreteclass)?
接口可以继承接口。
抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
11、构造器Constructor是否可被重写?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
12、是否可以继承String类?
String类是final类故不可以继承。
13、try{ }里有一个return语句,那么紧跟在这个try后的finally{ }里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
14、在java中一个类被声明为final类型,表示了什么意思?
表示该类不能被继承,意味着它不能再派生出新的子类,不能作为父类被继承,是顶级类
15、JAVA类实现序例化的方法是?
JAVA类要实现序列化,对应的类必须先实现Serializable和Externalizable这两种接口,然后就可以调用ObjectOutputStream的witeObject()方法来保存对象以及通过ObjeatInputStream的readObjeact()方法来读取保存的对象。
16、多线程有几种实现方法,都是什么?
同步有几种实现方法,都是什么?
多线程有三种实现方法,分别为:
①实现Runnable接口,覆盖Run()方法。
②继承Thread,覆盖Run()方法。
③继承TimerTask,覆盖Run()方法。
同步的实现是在方法前加synchronized,在调用wait()和notify()。
二、写出下列程序完成的功能
1、publicclassSum
{publicstaticvoidmain(Stringargs[])
{doublesum=0.0;
for(inti=1;
i<
=100;
i++)
sum+=1.0/(double)i;
System.out.println("
sum="
+sum);
}
}
2、importjava.io.*;
publicclassReverse
{publicstaticvoidmain(Stringargs[])
{inti,n=10;
inta[]=newint[10];
for(i=0;
n;
i++)
try{
BufferedReaderbr=newBufferedReader(
newInputStreamReader(System.in));
a[i]=Integer.parseInt(br.readLine());
//输入一个整数
}catch(IOExceptione){};
for(i=n-1;
i>
=0;
i――)
System.out.print(a[i]+"
"
);
System.out.println();
3、importjava.awt.*;
publicclassabc
{publicstaticvoidmain(Stringargs[])
{newFrameOut();
classFrameOutextendsFrame//Frame为系统定
{Buttonbtn;
//义的窗框类
FrameOut()
{super("
按钮"
btn=newButton("
按下我"
setLayout(newFlowLayout());
add(btn);
setSize(300,200);
show();
4、importjava.io.*;
{SubClasssb=newSubClass();
System.out.println(sb.max());
classSuperClass {
inta=10,b=20;
classSubClassextendsSuperClass{
intmax(){
return((a>
b)?
a:
b);
}
三、程序阅读题
1、阅读下列代码段:
Intx=10,y=12,r;
If(y>
x)
{
intt=y;
Y=x;
X=t;
}
While(y!
=0)
R=x%y;
X=y;
Y=r;
System.out.println(x);
程序运行结果为----------
2、阅读下面程序:
PulbicclassTestextendsTT
Publicstaticvoidmain(Stringargs[])
Testt=newTest(“Tom”)
PublicTests(Strings)
super(s);
System.out.println(“Howdoyoudo?
”);
PublicTest()
this(“IamJack”);
classTT
publicTT()
System.out.println(“Whatapleasure!
publicTT(Stirngs)
this();
System.out.println(“Iam”+s);
给出程序结果
3、 下列程序输出结果是什么?
publicclassSum{
publicstaticvoidmain(String[]args){
intj=10;
System.out.println("
jis:
+j);
calculate(j);
Atlast,jis:
staticvoidcalculate(intj){
for(inti=0;
i<
10;
i++)
j++;
jincalculate()is:
输出结果为:
(1)
jincalculate()is:
(2)
Atlastjis:
(3)
4、按注释完成程序
publicclassLeaf{
privateinti=0;
//此属性值用于检验
Leafincrement(){//定义方法increment(),返回值是Leaf类的对象
i++;
return
(1);
//将当前对象的地址作为返回值返回
voidprint(){
i="
+i);
publicstaticvoidmain(Stringargs[]){
Leafx=
(2);
//创建Leaf类的对象x
x.increment().increment().increment().print();
}//多次调用方法increment(),返回的都是x的地址,i值表示调用次数
输出结果为i=(3)
5、按注释提示完成文件复制的程序
//FileStream源代码如下:
importjava.io.*;
classFileStream{
publicstaticvoidmain(Stringargs[]){
try{
FileinFile=newFile("
file1.txt"
//指定源文件
FileoutFile=newFile("
file2.txt"
//指定目标文件
FileInputStreamfis=
(1);
FileOutputStreamfos=newFileOutputStream(outFile);
intc;
//逐字节从源文件中输入,再输出到fos流
while((c=fis.read())!
=-1)
(2);
fis.close();
fos.close();
}
catch(Exceptione){
FileStreamsTest:
+e);
6、阅读下列代码:
PublicclassTest{
Publicstaticvoidmian(Stringargs[]){
Floatf=12.0f;
Inti=3;
System.out.println((f--)/(++i));
程序运行结果为________.
7、阅读下面代码段:
PublicclassTest
Publicstaticvoidmain(stringargs[])
Charch;
Switch(ch)
Case‘a’:
system.out.print(“abc”);
break;
Case’b’:
system.out.print(“ab”);
Case’c’:
system.out.print(“c”);
Default:
不输出”abc”的ch值是-----------。
8、阅读下列代码:
Floata=4.0f,b=6.0f,c=8.0f;
Strings=”10.0”;
System.out.println(a+b+s+c);
System.out.println();
9、指出下列程序运行的结果是什么?
publicclassfff
{voidprintValue(intm)
{
do{System.out.println("
Thevalueis"
+m);
while(--m>
10)}
publicstaticvoidmain(Stringarg[])
{inti=10;
Testt=newTest();
t.printValue(i);
}
四、程序修改题
判断下面的程序片断是否正确。
若有错,指出错在哪里并改正。
1、classSomething{
finalinti;
publicvoiddoSomething(){
System.out.println("
i="
这错了吗?
2、此处,Something类的文件名叫OtherThing.java
classSomething{
privatestaticvoidmain(String[]something_to_do){
Dosomething..."
3、classIamAbstract
{
finalintf;
doubled;
abstractvoidmethod();
4、publicclassSomething{
publicstaticvoidmain(String[]args){
Somethings=newSomething();
s.doSomething()returns"
+doSomething());
publicStringdoSomething(){
return"
;
5、interfaceA{
intx=0;
classB{
intx=1;
classCextendsBimplementsA{
publicvoidpX(){
System.out.println(x);
newC().pX();
6、publicclassMyMain
publicstaticvoidmain(Stringargs[])
{System.out.println(MyClass1.data);
classMyClass1
intdata=10;
7、publicclassMyMain
{System.out.println(MyClass1.data);
classMyClass1
{intdata=10;
程序有错吗?
错在哪里?
8、publicclassMyClass
{intdata;
voidMyClass(intd)
{data=d;
五、程序编写题
1、请编写一个完整的java程序,将source.txt中的“这是在源文件中的数据”读出来显示在屏幕上,并且写入到destination.txt文件中。
2、请编写一个完整的JAVA程序,依次打印出命令行参数字符串数组各元素。
(字符串数组)
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
4.请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:
分别描述一张牌的牌面值(如:
A、K、Q、J、10、9、…、3、2等)和花色(如:
“黑桃”、“红桃”、“梅花”和“方块”)。
定义Card类中的public访问权限的构造方法,为类中的变量赋值;
定义protected访问权限的方法getFace(),得到扑克牌的牌面值;
定义protected访问权限的方法getSuit(),得到扑克牌的花色;
定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“红桃A”、“梅花10”等)。
5.若应用程序的main方法中,定义字符串数组f和s:
分别表示扑克牌的牌面值和花色;
定义52个元素的Card类型数组deck,用来存放4个花色的52张牌。
如下所示。
Stringf[]={"
A"
"
2"
3"
4"
5"
6"
7"
8"
9"
10"
J"
Q"
K"
};
Strings[]=
{"
黑桃"
红桃"
梅花"
方块"
Carddeck=newCard[52];
(1)使用Card类的构造方法给deck数组的52张牌赋值,要求数组中先存放黑桃花色的A、2、3、…、K;
然后是红桃花色的A、2、3、…、K;
梅花花色的A、2、3、…、K;
方块花色的A、2、3、…、K。
请写出实现上述功能的程序段。
JAVA语言基础复习题答案
1、计算1/1+1/2+1/3+...+1/100的值。
2、从标准输入(即键盘)读入10个整数存入整型数组a中,然后逆序输出这10个整数。
3、创建一个标题为"
的窗框,窗框中显示有"
字样的按钮。
4、求两个数的最大值。
1、 2
2、Whatapleasure!
IamTom
Howdoyoudo?
3、答案:
(1)10;
(2)20;
(3)10。
4.
(1)this;
(2)newLeaf();
(3)3
5、
(1)newFileInputStream(inFile);
(2)fos.write(c);
6、3
7、‘c’
8、10.010.08.0
9、10
四.改错题
1、答:
错。
finalinti是个final的instantvariable(实例变量,或叫成员变量)。
final的instantvariable没有defaultvalue,必须在constructor(构造器)结束之前被赋予一个明确的值。
可以修改为"
finalinti=0;
"
。
2、答:
正确。
从来没有人说过Java的Class名字必须和其文件名相同。
但publicclass的名字必须和文件名相同。
3、答:
IamAbstract作为具体类中不能包含有抽象方法。
改正如下:
abstractclassIamAbstract或classIamAbstract
{{
finalintf;
finalintf;
doubled;
a