CoreJava考试题Word格式文档下载.docx
《CoreJava考试题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《CoreJava考试题Word格式文档下载.docx(36页珍藏版)》请在冰豆网上搜索。
答:
不正确;
精度不准确,应该用强制类型转换,如下所示:
floatf=(float)3.4。
5、语句floatf=1.3;
编译能否通过?
不能;
应该用强制类型转换,如下所示:
floatf=(float)1.3;
。
6、shorts1=1;
s1=s1+1;
有什么错?
shorts1=1;
s1+=1;
s1+1运算结果是int型,需要强制转换类型;
可以正确编译,自动类型提升。
7、Java有没有goto?
goto是java中的保留字,现在没有在java中使用。
8、int和Integer有什么区别?
Java提供两种不同的类型:
引用类型和原始类型(或内置类型);
int是java的原始数据类型,Integer是java为int提供的封装类。
Java为每个原始类型提供了封装类:
原始类型:
boolean,char,byte,short,int,long,float,double
封装类型:
Boolean,Character,Byte,Short,Integer,Long,Float,Double
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。
引用类型和
原始类型具有不同的特征和用法,它们包括:
大小和速度问题,这种类型以哪种
类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的
缺省值。
对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与
它们的类型有关。
9、&
和&
&
的区别?
是位运算符,表示按位与运算,&
是逻辑运算符,表示逻辑与(and)。
10、简述逻辑操作(&
|,^)与条件操作(&
||)的区别?
区别主要有两点:
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作
布尔型,而且可以操作数值型b.逻辑操作不会产生短路。
11、heap和stack有什么区别?
栈是一种线形集合,其添加和删除元素的操作应在同一段完成,栈按照后进
先出的方式进行处理;
堆是栈的一个组成元素。
第3页共59页
12、Math.round(11.5)等于多少?
Math.round(-11.5)等于多少?
Math.round(11.5)==12Math.round(-11.5)==-11round方法返回与参数
最接近的长整数,参数加1/2后求其floor。
13、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String
上?
switch(expr1)中,expr1是一个整数表达式。
因此传递给switch和case
语句的参数应该是int、short、char或者byte。
long,string都不能作用
于swtich。
14、编程题:
用最有效率的方法算出2乘以8等於几?
2<
<
3。
15、有没有length()这个方法?
String有没有length()这个方法?
数组没有length()这个方法,有length的属性。
String有length()这个
方法。
16、在JAVA中,如何跳出当前的多重嵌套循环?
在最外层循环前加label标识,然后用break:
label方法即可跳出多重循环。
17、构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重
载Overloading。
18、两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这
句话对不对?
不对,有相同的hashcode。
19、是否可以继承String类?
String类是final类,故不可以继承。
20、以下二条语句返回值为true的有:
A:
“beijing”==“beijing”;
B:
“beijing”.equalsIgnoreCase(newString(“beijing”));
A和B。
21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,
并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。
Java编程语言只有值传递参数。
当一个对象实例作为一个参数
被传递到方法中时,参数的值就是对该对象的引用。
对象的内容可以在被调用的
方法中改变,但对象的引用是永远不会改变的。
22、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1
等,如何输出一个某种编码的字符串?
publicStringtranslate(Stringstr){
第4页共59页
StringtempStr="
"
;
try{
tempStr=newString(str.getBytes("
ISO-8859-1"
),"
GBK"
);
tempStr=tempStr.trim();
}catch(Exceptione){
System.err.println(e.getMessage());
}
returntempStr;
23、String和StringBuffer的区别?
JAVA平台提供了两个类:
String和StringBuffer,它们可以储存和操作字
符串,即包含多个字符的字符数据。
这个String类提供了数值不可改变的字符
串。
而这个StringBuffer类提供的字符串进行修改。
当你知道字符数据要改变
的时候你就可以使用StringBuffer。
典型地,你可以使用StringBuffers来动
态构造字符数据。
24、String,StringBufferStringBuilder的区别。
String的长度是不可变的;
StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,
特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使
用StringBuffer的toString()方法;
线程安全;
StringBuilder是从JDK5开始,为StringBuffer该类补充了一个单个线
程使用的等价类;
通常应该优先使用StringBuilder类,因为它支持所有相同
的操作,但由于它不执行同步,所以速度更快。
25、Overload和Override的区别。
Overloaded的方法是否可以改变返回值的类
型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重
写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个
类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参
数,我们说该方法被重写(Overriding)。
子类的对象使用这个方法时,将调用
子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一个类中定
义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方
法的重载(Overloading)。
Overloaded的方法是可以改变返回值的类型。
26、定义类A和类B如下:
classA{
inta=1;
doubled=2.0;
voidshow(){
System.out.println("
ClassA:
a="
+a+"
\td="
+d);
classBextendsA{
第5页共59页
floata=3.0f;
Stringd="
Javaprogram."
super.show();
ClassB:
(1)若在应用程序的main方法中有以下语句:
Aa=newA();
a.show();
则输出的结果如何?
(2)若在应用程序的main方法中定义类B的对象b:
Ab=newB();
b.show();
输出结果为:
1)ClassA:
a=1d=2.0;
2)ClassA:
a=1d=2.0
a=3.0d=Javaprogram。
27、描述一下JVM加载class文件的原理机制?
JVM中类的装载是由ClassLoader和它的子类来实现的,JavaClassLoader
是一个重要的Java运行时系统组件。
它负责在运行时查找和装入类文件的类。
28、char型变量中能不能存贮一个中文汉字?
为什么?
能够定义成为一个中文的,因为java中以unicode编码,一个char占16
个字节,所以放一个中文是没问题的。
29、abstractclass和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用
于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现
该类的情况。
不能创建abstract类的实例。
然而可以创建一个变量,其类型是
一个抽象类,并让它指向具体子类的一个实例。
不能有抽象构造函数或抽象静态
Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也
是抽象类为。
取而代之,在子类中实现该方法。
知道其行为的其它类可以在类中
实现这些方法。
接口(interface)是抽象类的变体。
新型多继承性可通过实现
这样的接口而获得。
接口中的所有方法都是抽象的,所有成员变量都是public
staticfinal的。
一个类可以实现多个接口,当类实现特殊接口时,它定义(即
将程序体给予)所有这种接口的方法。
然后,它可以在实现了该接口的类的任何
对象上调用接口的方法。
由于有抽象类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。
引用可以转换到接口类型或从接口类型转换,
instanceof运算符可以用来决定某对象的类是否实现了接口。
第6页共59页
30、StaticNestedClass和InnerClass的不同?
StaticNestedClass是被声明为静态(static)的内部类,它可以不依赖
于外部类实例被实例化。
而通常的内部类需要在外部类实例化后才能实例化。
31、java中会存在内存泄漏吗,请简单描述。
会;
存在无用但可达的对象,这些对象不能被GC回收,导致耗费内存资源。
32、abstract的method是否可同时是static,是否可同时是native,是否可同
时是synchronized?
都不能。
33、静态变量和实例变量的区别?
静态变量也称为类变量,归全类共有,它不依赖于某个对象,可通过类名直
接访问;
而实例变量必须依存于某一实例,只能通过对象才能访问到它。
34、是否可以从一个static方法内部发出对非static方法的调用?
不可以,如果其中包含对象的method(),不能保证对象初始化。
35、写clone()方法时,通常都有一行代码,是什么?
Clone有缺省行为:
super.clone(),他负责产生正确大小的空间,并逐位
复制。
36、GC是什么?
为什么要有GC?
GC是垃圾收集的意思(GabageCollection),内存处理是编程人员容易出
现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,
Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的
目的,Java语言没有提供释放已分配内存的显示操作方法。
Java程序员不用
担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用下
面的方法之一:
System.gc()或Runtime.getRuntime().gc()。
37、垃圾回收的优点和原理。
并考虑2种回收机制。
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼
的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考
虑内存管理。
由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,
只有对象的引用才有“作用域”。
垃圾回收可以有效的防止内存泄露,有效的使
用可以使用的内存。
垃圾回收器通常是作为一个单独的低级别的线程运行,不可
预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回
收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。
回
收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
38、垃圾回收器的基本原理是什么?
垃圾回收器可以马上回收内存吗?
有什么办
法主动通知虚拟机进行垃圾回收?
对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小
以及使用情况。
通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。
通过这种方式确定哪些对象是"
可达的"
,哪些对象是"
不可达的"
。
当GC确定一
第7页共59页
些对象为"
不可达"
时,GC就有责任回收这些内存空间。
可以。
程序员可以手动
执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。
39、Strings=newString(“xyz”);
创建了几个StringObject?
两个对象,一个是"
xyx"
一个是指向"
的引用对象s。
40、接口是否可继承接口?
抽象类是否可实现(implements)接口?
抽象类是否可
继承实体类(concreteclass)?
接口可以继承接口。
抽象类可以实现(implements)接口,抽象类可继承实体
类,但前提是实体类必须有明确的构造函数。
41、Java的接口和C++的虚类的相同和不同处。
由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对
象里面的方法或属性,现有的单继承机制就不能满足要求。
与继承相比,接口有
更高的灵活性,因为接口中没有任何实现代码。
当一个类实现了接口以后,该类
要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是
publicstatic,所有方法默认情况下是public.一个类可以实现多个接口。
42、一个“.java”源文件中是否可以包含多个类(不是内部类)?
有什么限制?
可以;
必须只有一个类名与文件名相同。
43、说出一些常用的类,包,接口,请各举5个。
常用的类:
BufferedReaderBufferedWriterFileReaderFileWirter
StringInteger;
常用的包:
java.langjava.awtjava.iojava.utiljava.sql;
常用的接口:
RemoteListMapDocumentNodeList
44、AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类?
是否可以implements(实现)interface(接口)?
可以继承其他类或实现其他接口,在swing编程中常用此方式。
45、内部类可以引用他包含类的成员吗?
有没有什么限制?
一个内部类对象可以访问创建它的外部类对象的内容。
46、java中实现多态的机制是什么?
方法的覆盖Overriding和重载Overloading是java多态性的不同表现;
覆
盖Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个
47、在java中一个类被声明为final类型,表示了什么意思?
表示该类不能被继承,是顶级类。
48、下面哪些类可以被继承?
1)java.lang.Thread(T)
第8页共59页
2)java.lang.Number(T)
3)java.lang.Double(F)
4)java.lang.Math(F)
5)java.lang.Void(F)
6)java.lang.Class(F)
7)java.lang.ClassLoader(T)
1、2、7可以被继承。
49、指出下面程序的运行结果:
classA{
static{
System.out.print("
1"
publicA(){
2"
a"
publicB(){
b"
publicclassHello{
publicstaticvoidmain(String[]ars){
Aab=newB();
//执行到此处,结果:
1a2b
ab=newB();
1a2b2b
输出结果为1a2b2b;
类的static代码段,可以看作是类首次加载(虚拟机加
载)执行的代码,而对于类加载,首先要执行其基类的构造,再执行其本身的构造。
50、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
父类:
packagetest;
publicclassFatherClass{
publicFatherClass(){
FatherClassCreate"
子类:
第9页共59页
importtest.FatherClass;
publicclassChildClassextendsFatherClass{
publicChildClass(){
ChildClassCreate"
publicstaticvoidmain(String[]args){
FatherClassfc=newFatherClass();
ChildClasscc=newChildClass();
FatherClassCreate
ChildClassCreate
51、内部类的实现方式?
示例代码如下:
publicclassOuterClass{
privateclassInterClass{
publicInterClass(){
InterClassCreate"
publicOuterClass(){
InterClassic=newInterClass();
OuterClassCreate"
OuterClassoc=newOuterClass();
输出结果为:
InterClassCreate
OuterClassCreate
52、关于内部类:
privatedoubled1=1.0;
//insertcodehere
Youneedtoinsertaninnerclassdeclarationatline3,Whichtwo
innerclassdeclarationsarevalid?
(Choosetwo.)
A.classInnerOne{
第10页共59页
publicstaticdoublemethoda(){returnd1;
B.publicclassInnerOne{
staticdoublemethoda(){returnd1;
C.privateclassInnerOne{
doublemethoda(){returnd1;
D.staticclassInnerOne{
protecteddoublemethoda(){returnd1;
E.abstractclassInnerOne{
publicabstractdoublemethoda();