java考试题及答案Word下载.docx
《java考试题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《java考试题及答案Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
![java考试题及答案Word下载.docx](https://file1.bdocx.com/fileroot1/2022-11/24/c5f634c2-5899-43d8-963d-2dd9f902cd0b/c5f634c2-5899-43d8-963d-2dd9f902cd0b1.gif)
A)TRUEB)sizeofC)constD)superE)void
8、给出下面的不完整的类代码:
classPerson{
Stringname,department;
intage;
publicPerson(Stringn){name=n;
}
publicPerson(Stringn,inta){name=n;
age=a;
publicPerson(Stringn,Stringd,inta){
//doingthesameastwoargumentsversionofconstructor
//includingassignmentname=n,age=a
department=d;
}
}
下面的___C_____可以加到构造方法中的"
doingthesameas..."
处?
A)Person(n,a);
B)this(Person(n,a));
C)this(n,a);
D)this(name,age)
9、下面关于变量及其范围的陈述哪些是对的是_____A,C,D___。
A)实例变量是类的成员变量。
B)实例变量用关键字static声明。
C)在方法中定义的局部变量在该方法被执行时创建。
D)局部变量在使用前必须被初始化。
实例变量(英文为:
instancevariable)是在方法外而在类声明内定义的变量,有时也叫成员变量;
类变量(英文为:
classvariable)是用关键字static声明的实例变量,他们的生存期分别是:
局部变量在定义该变量的方法被调用时被创建,而在该方法退出后被撤销;
实例变量在使用newXxxx()创建该类的实例时被创建,而其生存期和该类的实例对象的生存期相同;
类变量在该类被加载时被创建,不一定要用newXxxx()创建,所有该类的实例对象共享该类变量,其生存期是类的生存期。
任何变量在使用前都必须初始化,但是需要指出的是局部变量必须显式初始化,而实例变量不必,原始类型的实例变量在该类的构造方法被调用时为它分配的缺省的值,整型是0,布尔型是false,而浮点型是0.0f,引用类型(类类型)的实例变量的缺省值是null(没有进行实际的初始化,对它的使用将引起NullPointException),类变量的规则和实例变量一样,不同的是类变量的初始化是在类被加载时。
10、final,finally,finalize的区别(3分)
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
算符可以用来决定某对象的类是否实现了接口
11、JAVA语言如何进行异常处理,关键字:
throws,throw,try,catch,finally分别代表什么意义?
在try块中可以抛出异常吗?
(5分)
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例.当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理.
Try:
执行部分,产生异常
Catch:
捕捉异常
Finally:
不管有没有异常都执行
Throws:
在方法声明处声明要抛出的异常,调用者必须对其进行处理。
Throw:
抛出一个异常
在try中可以抛出异常,一般与声明的异常相同。
自定义异常要继承于Exception或Exception的子类
12、列出至少五种最常见到的runtimeexception(3分)
ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException
13、在struts中如何通过一个url找到一个action,它的核心配置文件是什么?
(2分)
Struts-config.xml
14、请在下表中体现出Java中类的限定词的作用范围,在相应位置打“√”:
(4分)
同一个类
不同包非子类
不同包的子类
同一个包
private
√
protected
不写时
public
11、通过jsp,servlet描述Struts,并用实例(包括文字描述和相关代码)说明。
(10分)
view是视图一般用JSP
model是模型一般用于操作数据库的
就是javabean
control就是控制器servlet
可控制页面的定位
用servlet
struts是一个框架,是为了实现mvc的
二、查错(指出错误或不足的地方并建议出好的写法)(每题2分共10分)
1、floatf=3.4
不正确。
精度不准确,应该用强制类型转换,如下所示:
floatf=(float)3.4或floatf=3.4f
2、if(formBeans.getName().equals("
abc"
)){...}
避免空指针异常,因为formBeans.getName()为null时会报空指针异常
3、intxx=formBeans.isFunc()==true?
1:
0;
==true是多余的,写法不好。
4、publicclassSomething{
voiddoSomething(){
privateStrings="
"
;
intl=s.length();
}
}
答:
有错。
局部变量前不能放置任何访问修饰符(private,public,和protected)。
final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。
5、publicclassSomething{
publicintaddOne(finalintx){
return++x;
这个错误比较明显。
intx被修饰成final,意味着x不能在addOnemethod中被修改。
三、编程题(共45分)
1、用java实现一排序功能。
若能用冒泡法实现给5分,若用快速排序法实现给15分。
冒泡排序:
voidbubbleSort(int[]array)
{intcount=1;
booleanflag=true;
while(flag)
{flag=false;
for(inti=0;
i<
array.length-count;
i++)
{if(array>
array[i+1])
{inttemp=array;
array=array[i+1];
array[i+1]=temp;
flag=true;
}
count++;
}}
快速排序:
publicstaticvoidpaixu(inta[],intlow,inthigh)//用快速排序法
{
//low,high表示扫描的范围
intpivot;
//存放中心索引及其值的局部变量
intscanup,scandown,mid;
//用于扫描的索引
if(high-low<
=0)//如果数组中的元素少于两个,则返回
return;
else
if(high-low==1)//如果有两个元素,对其进行比较
{
if(apai[high]<
apai[low])//如果后一个比前一个小,
Swap(apai[low],apai[high]);
//那么交换位置
return;
}//endif
mid=(low+high)/2;
//取得中心索引
pivot=apai[mid];
//将中间索引的值,赋给pivot
Swap(apai[mid],apai[low]);
//交换pivot及低端元素的值
Scanup=low+1;
Scandown=high;
//初始化扫描索引scanup和scandown
do{
//从低端子表向上扫描,当scanup进入高端子表或遇到大于pivot的元素时结束.
while(scanup<
=scandown&
&
apai[scanup]<
=pivot)
scanup++;
//从高端子表向下扫描,当scandown遇到小于或等于pivot的元素时结束
while(piovt<
apai[scandown])
scandown--;
//如果两个索引还在各自的子表中,则表示两个元素错位,将两个元素换位
if(scanup<
scandown)
Swap(apai[scanup],apai[scandown]);
}while(scanup<
scandown);
//将pivot拷贝到scandown位置,分开两个子表
apai[low]=apai[scandown];
apai[scandown]=pivot;
//如果低端子表(low至scandown-1)有2个或更多个元素,则进行递归调用
if(low<
scandown-1)
paixu(apai,low,scandown-1);
//如果高端子表(scandown+1至high)有2个或更多个元素,则进行递归调用
if(scandown+1<
high)
paixu(apai,scandown+1,high);
2、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如"
我ABC"
4,应该截为"
我AB"
,输入"
我ABC汉DEF"
,6,应该输出为"
而不是"
我ABC+汉的半个"
。
(20分)
classSplitString
{
StringSplitStr;
intSplitByte;
publicSplitString(Stringstr,intbytes)
SplitStr=str;
SplitByte=bytes;
System.out.println("
TheStringis:
′"
+SplitStr+"
′;
SplitBytes="
+SplitByte);
publicvoidSplitIt()
intloopCount;
loopCount=(SplitStr.length()%SplitByte==0)?
(SplitStr.length()/SplitByte):
(SplitStr.length()/Split
Byte+1);
WillSplitinto"
+loopCount);
for(inti=1;
=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)));
publicstaticvoidmain(String[]args)
SplitStringss=newSplitString("
test中dd文dsaf中男大3443n中国43中国人
0ewldfls=103"
4);
ss.SplitIt();
3、写一段Jdbc连Oracle的程序,并实现数据查询(10分)
importjava.sql.*;
publicclassjdbc
StringdbUrl="
jdbc:
oracle:
thin:
@127.0.0.1:
1521:
orcl"
StringtheUser="
admin"
StringthePw="
manager"
Connectionc=null;
Statementconn;
ResultSetrs=null;
publicjdbc()
try{
Class.forName("
oracle.jdbc.driver.OracleDriver"
).newInstance();
c=DriverManager.getConnection(dbUrl,theUser,thePw);
conn=c.createStatement();
}catch(Exceptione){
e.printStackTrace();
publicbooleanexecuteUpdate(Stringsql)
try
conn.executeUpdate(sql);
returntrue;
catch(SQLExceptione)
returnfalse;
publicResultSetexecuteQuery(Stringsql)
rs=null;
rs=conn.executeQuery(sql);
returnrs;
publicvoidclose()
conn.close();
c.close();
catch(Exceptione)
ResultSetrs;
jdbcconn=newjdbc();
rs=conn.executeQuery("
select*fromtest"
);
while(rs.next())
System.out.println(rs.getString("
id"
));
name"
}catch(Exceptione)