考试题含答案Word下载.docx
《考试题含答案Word下载.docx》由会员分享,可在线阅读,更多相关《考试题含答案Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
10.}
11.
12.publicstaticvoidmain(String[]args){
13.Bb=newB();
14.System.out.println(b.getNumber());
15.}
16.}
3.输出的结果是
A.1
B.2
C.8行编译错误
D.14行编译错误
4.哪个是有效的标识符
A.false
B.default
C._object
D.a-class
publicclassFoo{
publicstaticvoidmain(String[]args){
inti=1;
intj=i++;
if((i>
++j)&
&
(i++==j)){
i+=j;
}
}
5.最终i的值为:
C.3
D.4
E.5
publicclassX{
publicstaticvoidmain(String[]args){
Strings=newString(“Hello”);
modify(s);
System.out.println(s);
publicstaticvoidmodify(Strings){
s+=“world!
”;
6.输出的结果是:
A.Hello
B.Helloworld!
c.编译错误
D.程序运行抛出异常
int[]a=newint[1]
modify(a);
System.out.println(a[0]);
publicstaticvoidmodify(int[]a){
a[0]++;
7.输出的结果是:
A.0
B.1
publicstaticvoidmain(String[]args){
StringBuffera=newStringBuffer(“A”);
StringBufferb=newStringBuffer(“B”);
operate(a,b);
System.out.println(a+“,”+b);
)
staticvoidoperate(StringBufferx,StringBuffery){
y.append(x);
y=x;
8.输出的结果是:
A.“A,B”.
B.“A,BA”.
C.“AB,B”.
D.“AB,AB”.
E.“BA,BA”.
1.publicclassX{
2.publicstaticvoidmain(Stringargs){
3.byteb=127;
4.bytec=126;
5.byted=b+c;
6.}
7.}
9.下面哪个说法是正确的
A.编译成功D的值为253
B.第3行没有办法编译.
C.第5行出现错误
d.编译成功d值为1.
10.下面代码i的值的类型应该为:
1.switch(i){
2.default:
3.System.out.printIn(“Hello”);
A.Byte
B.Long
C.Float
D.Double
E.Object
F.AandB
G.CandD
publicclassTest{
staticinta=0;
//类变量
intb=10;
//实例变量
publicstaticvoidmain(String[]args){
Testt=newTest();
Testt1=newTest();
t.a=10;
t.b=20;
System.out.println(t1.a);
System.out.println(t1.b);
11.输出的结果是:
A.0,20
B.10,20
C.0,10
D.10,10
publicclassFatherClass{
publicFatherClass(){
System.out.print("
Father"
);
}
}
publicclassChildClassextendsFatherClass{
publicChildClass(){
Child"
publicstaticvoidmain(String[]args){
FatherClassfc=newChildClass();
12.上面代码裕兴的结果是:
A)FatherChildB)Child
C)FatherD)出错
13.以下哪一项可以用于从派生类调用方法getName()的正确选项,已从基类中声明和定义了方法getName();
Asuper().getName()BGetName(super)CgetName.super()D.super.getName();
1 publicclassChildClass{
2
3 args=newSting[10];
4args[0]=”20”;
5args[4]=”10”;
6System.out.println(args[3]);
7System.out.println(args[4]);
}
14.上面代码运行的结果是:
A.6行代码编译错误
B.代码能正常运行输出的结果是0,10
C.代码能正常运行输出的结果是NULL,10
D.代码运行抛出ArrayIndexOutOfBoundsException
publicstaticvoidmain(String[]args){
inti=0;
intj=0;
for(i=0;
i<
20;
i++){
if(i==5){
continue;
}elseif(i==10){
break;
}else{
j++;
}
}
System.out.println(i);
System.out.println(j);
15.上面的代码运行的结果是:
A.i的值为10,j的值为10;
B.i的值为5,j的值为5;
C.i的值为10,j的值为9;
D.编译错误
二、问答题 (5分*11=55分)
1.JAVA(跨平台)原理
Java一次编译处处运行。
将源码编译成字节码文件,然后通过JVM解释执行。
JVM是虚拟的计算机,有自己的寄存器,堆栈,指令集。
他屏蔽了程序与操作系统的信息。
JAVA的程序只运行在JVM上。
根据不同的OS,JVM也不一样。
相当于是个程序和OS之间的一个桥梁
2.抽象类和接口的区别
抽象类:
abstract.含有抽象的方法一定是抽象类,反之不成立。
抽象类也可以有普通的方法,变量。
但是抽象类不能实例化,只有被继承,使用子类。
接口:
接口里面的方法都是publicabstract的方法。
也可以有常理(publicstaticfinal定义的变量)
3.面向对象有哪些特征
继承:
代码复用,有层次结构,方便创建子类
封装:
通过访问修饰符,包来完成.内部类也是种封装
抽象:
数据抽象和过程抽象(即:
属性和方法)
多态:
同一行为,不同的实例表现形式不一样,主要是通过方法的重载和重写
4.String和StringBuffer的区别
String不可变长度
StringBuffer可变长度
在使用上:
遇到连+的时候,使用StringBuffer,他的效率要比String效率要高。
因为String的连+会产生很多对象。
StringBuffer还可以操作字符串插入
5.面向接口编程有哪些好处
1.声明和实现相分离,,程序具有更好的扩展性,维护性比较好解耦(减少依赖)
2.解决了JAVA的单继承
3.面向接口编程也是多态的表现
6.2计算得到8效率最高的方式是
2<
<
2
7.写出验证一个邮箱是否合法的正则表达式
Stringregex=”\\w+[@]\\w+[.]\\w+”;
8.Override和overloading的区别
Override体现在继承上。
覆盖父类的方法叫重写(和父类具有相同的方法名,相同的参数列表,相同的返回值,访问权限至少要大于等于父类的)
Overload重载:
体现在,同一个类中,具有相同的方法名,但是有不同的参数列表。
和返回值无关。
如果有继承,和父类具有相同的方法名和不同的参数列表也是重载
9.谈谈对JAVA的垃圾回收机制的理解
Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法
通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。
通过这种方式确定哪些对象是"
可达的"
,哪些对象是"
不可达的"
。
当GC确定一些对象为"
不可达"
时,GC就有责任回收这些内存空间。
可以。
程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会马上执行。
10.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
说说为什么
值传递,JAVA只有这一种传递方式。
不过当方法传递引用类型的时候,传递的值是内存的地址。
11.==和equals的区别
==即可以比较基本类型也可以比较引用类型。
Equals只能比较引用类型。
在比较引用类型的时候,它们没有什么区别。
都是比较对象的地址。
String这个类重写了Object的equals方法。
它的比较不再是比较地址,而是比较字符串的值。
如果我们希望比较对象的值也可以重写Object的equals方法
三、编程题(5分*6=30分)
1.写个模板模式:
publicabstractclassTemp{
//准备方法
privatevoidpre(){
System.ou.println(“准备工作……..”);
protectedabstractvoiddoWork();
publicvoidenter(){
Pre();
doWork();
}}
//子类
publicclassHongShaoextendsTemp{
protectedabstractvoiddoWork(){
System.out.println(“红烧…………………….”);
//////////////////////////////////////////测试代码略//////////////////////////////////////////////
2.写个适配器模式:
//总共三个类
publicinterfaceTarget{
publicvoidsuport3_5();
publicclassSource{
publicvoidsuport2_5(){
System.out.println(“2.5….”);
publicclassadapterextendsSourceimplementsTarget{
publicvoidsuport3_5(){
super.suport2_5();
System.out.println(“3.5….”);
3.5!
用递归实现
publicintgetValue(intn){
if(n==1||n==0){
return1;
returnn*getValue(n-1);
4.//打印三角数(使用循环),格式如下:
//1
//22
//333
for(inti=1;
=3;
i++){//输出三行
for(intj=3;
j>
=1;
j--){
if(j<
=i){
System.out.print(i);
}else{
System.out.print("
"
}
System.out.println();
//循环完一次换个行
5.冒泡排序
intmp[]={9,5,6,2,4,8,7,3,1};
for(inti=0;
i<
9;
i++)
{
for(intj=0;
j<
j++)
inttemp;
if(mp[i]<
mp[j])
temp=mp[j];
mp[j]=mp[i];
mp[i]=temp;
6.程序设计:
//自由发挥了
赵本山有个小品,场景是这样的:
话说一只蛇咬了人,那个人就追打蛇。
蛇一下跑进了河里,过了一会水里跑出了只乌龟。
那人一把抓住了乌龟说:
小样,别以为你穿了马甲我就不认识你了。
就上面的场景些出程序:
要求:
蛇和乌龟要抽象成类。
提供方法,传入的参数是:
蛇,返回值是乌龟,然后打印乌龟的信息。
四、附加题//二叉树不算题
数组的快速排序算法: