Java⼊门基础:100道Java基础笔试考试题,附带答案(收集
和整理的)
100.equals⽅法和==的区别
答案:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的⽐较,应⽤双等号(==),⽐较的是他们的值。
2.复合数据类型(类)
当他们⽤(==)进⾏⽐较的时候,⽐较的是他们在内存中的存放地址,所以,除⾮是同⼀个new出来的对象,他们的⽐较后的结果为true,否则⽐较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了⼀个equals的⽅法,这个⽅法的初始⾏为是⽐较对象的内存地 址,但在⼀些类库当中这个⽅法被覆盖掉了,如String,Integer,Date在这些类当中equals有其⾃⾝的实现,⽽不再是⽐较类在堆内存中的存放地址了。
对于复合数据类型之间进⾏equals⽐较,在没有覆写equals⽅法的情况下,他们之间的⽐较还是基于他们在内存中的存放位置的地址值的,因为Object的equals⽅法也是⽤双等号(==)进⾏⽐较的,所以⽐较后的结果跟双等号(==)的结果相同。
101.String、StringBuffer、StringBuilder有什么区别?
答案:
String类表⽰内容不可改变的字符串。
⽽StringBuffer类表⽰内容可以被修改的字符串。当你知道字符数据要改变的时候你就可以使⽤StringBuffer。典型地,你可以使⽤StringBuffers来动态构造字符数据。
另外,String实现了equals⽅法,new String(“abc”).equals(new String(“abc”)的结果为true,
⽽StringBuffer没有实现equals⽅法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为false。StringBuffer和StringBuilder类都表⽰内容可以被修改的字符串,StringBuilder是线程不安全的,运⾏效率⾼,如果⼀个字符串变量是在⽅法⾥⾯定义,这种情况只可能有⼀个线程访问它,不存在不安全的因素了,则⽤StringBuilder。
如果要在类⾥⾯定义成员变量,并且这个类的实例对象会在多线程环境下使⽤,那么最好⽤StringBuffer。
1.以下哪个是finalize()⽅法的正确形式?
A.protected void finalize() throws Throwable
B.final finalize()
C.public final finalize()
D.private boolean finalize()
java常见笔试题答案:Aoracle数据库的数据模型是
2.如果finalize()⽅法抛出⼀个运⾏时异常,以下哪个描述正确?
A.正在运⾏的应⽤程序系统崩溃
B.此异常被忽略,并且该异常对象被垃圾回收器回收
C.此异常被忽略,但是该异常对象未被垃圾回收期回收
D.此异常导致JVM崩溃
答案:B
答案解析:finalize()⽅法只是⽤于清除对象,⽽不是实际的销毁对象,因此对该⽅法的调⽤不会引起系统崩溃,该⽅法抛出的异常也会作为废弃对象被垃圾回收期回收
3.如何释放掉⼀个对象占据的内存空间?
A.调⽤free()⽅法
B.调⽤()⽅法
C.赋值给该对象的引⽤为null
D.程序员⽆法明确强制垃圾回收器运⾏
js广告代码怎么调尺寸答案:D
4.给出以下代码:
1.public class Example {
2. public static void main(String[] args) {
3. String s = "abcd";
4. Integer x = new Integer(3);
5. String s2 = s + 4;
6. s2 = null;
7. s = null;
8. }
9.}
改程序运⾏到第⼏⾏变量S2引⽤的对象符合垃圾回收器回收条件?
A.第7⾏
B.不存在
C.第6⾏
D.直到main线程结束,S2应⽤的对象才可能被回收
答案:C
5.以下代码运⾏到关键点处,有多少对象符合垃圾回收的条件?
public class Example {
public static void main(String[] args) {
String name;
String newName = "Nick";
newName = "Jason";
name = "Frieda";
String newestName = name;
name = null;
// 关键点
}
}
A.0个
B.1个
C.2个
D.3个
答案:B
6.以下哪些是有关垃圾回收器的正确描述?
A.程序员可以在制定时间调⽤垃圾回收器释放内存
B.垃圾回收器可以保证Java程序不会产⽣内存溢出
C.程序员可以制定垃圾回收器回收对象
D.对象的finalize()⽅法在对象被垃圾回收器回收之前获得调⽤
答案:C、D
答案解析:通过通配符*号引⼊的两个不同包中存在同名的类,当代码中不加包名直接使⽤时,会产⽣编译错误,使⽤时需要提供完整包路径
7.拥有下列哪些引⽤类型的对象在虚拟机内存⾜够的情况下不会被垃圾回收机制回收?
A.强引⽤
B.软引⽤
C.弱引⽤
D.虚引⽤
答案:A、B
8.finalize和C++ 的 destructors有何差异?
答案:Java内部具有“内存使⽤回收” 的机制, 虽然它也提供了类似 (C++ 的) destructors的 finalize(),每个对象都可以使⽤这个⽅法method,但必须冒著破坏原先回收机制的危险。所以建议尽量避免使⽤finalize(),不妨考虑多使⽤引⽤队列来释出资源会好⼀些。
9.Java语⾔中异常的分类是哪项?
A.运⾏时异常和异常
B.受检异常和⾮受检异常
C.错误和异常
D.错误和运⾏时异常
答案:C
10.所有异常的⽗类是哪项?
A.Throwable
B.Error
C.RuntimeException
D.Exception
答案:A
11.下列属于⾮受检异常(运⾏时异常)的是哪项?
A.SQLException
B.IOException
C.NullPointerException
D.OutOfMemoryError
答案:C
12.假设有⾃定义异常类ServiceException,那么抛出该异常的语句正确的是哪项?ae教程视频免费
A.raise ServiceException
B.throw new ServiceException()
C.throw ServiceException
D.throws ServiceException
答案:B
13.在⽅法声明中,说明该⽅法可能会抛出的异常列表时使⽤哪个关键字?
A.throw
B.catch
C.finally
D.throws
答案:D
14.现有代码:
public class Example {
public static void main(String[] args) {
try {
System.out.print(Integer.parseInt("forty"));
} catch (RuntimeException e) {
System.out.println("Runtime");
}catch (NumberFormatException e) {
System.out.println("Number");
}
}
}
执⾏结果是什么?
A.输出Number
B.输出Runtime
C.输出40
D.编译失败
答案:D
答案解析:NumberFormatException是RuntimeException的⼦类,因此两个catch块位置应该交换才能正确处理异常
15.现有代码如下:
public class Example {
void topGo() {
try {
middleGo();
} catch (Exception e) {
System.out.println("catch");
}
}
void middleGo() throws Exception {
go();
System.out.println("late middle");
}
void go() throws Exception {
throw new Exception();
}
public static void main(String[] args) { Example example = new Example();
}
}
该代码的执⾏结果是?
A.输出late middle
B.输出catch
C.输出late middle catch
D.输出catch late middle
答案:B
16.如下代码执⾏后的输出结果是?java转python工具
public class Example {
public static void main(String[] args) { try {
throw new Exception();
} catch (Exception e) {
try {
throw new Exception();
} catch (Exception e2) {
System.out.println("inner");
}
System.out.println("middle");
}
System.out.println("out");
}
}
A.inner outer
B.middle outer
C.inner middle outer
D.编译失败
答案:C
17.现有如下代码:
public class Example extends Utils{
public static void main(String[] args) {
try {
System.out.println(new Example().getInt("42"));
exporter详解} catch (NumberFormatException e) {
System.out.println("NFExc");
}
}
int getInt(String arg) throws NumberFormatException{
return Integer.parseInt(arg);
}
}
class Utils {
int getInt(String arg) {
return 42;
}
}
该代码执⾏的结果是?
A.NFExc
B.42.0
C.42NFExc
D.编译失败
答案:B
答案解析:Utils中的getInt⽅法没有抛出异常,⽽⼦类Example中的getInt抛出了运⾏时异常,这是符合⽅法覆盖的抛出异常特性规范的,因为运⾏时异常并不会强制要求⽅法调⽤代码捕获处理
18.现有如下代码:
public class Example extends Utils{
public static void main(String[] args) {
try {
System.out.println(new Example().getInt("42"));
} catch (NumberFormatException e) {
System.out.println("NFExc");
}
}
int getInt(String arg) throws Exception{
return Integer.parseInt(arg);
}
}
class Utils {
int getInt(String arg) {
return 42;
}
}
该代码执⾏的结果是?
A.NFExc
B.42.0
C.42NFExc
D.编译失败
答案:D
答案解析:⼦类抛出的异常不符合⽅法覆盖的异常列表要求,因此编译失败(见上题)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论