导航菜单
首页 >  javaweb考试题及答案  > Java入门基础:100道Java基础笔试考试题,附带答案(收集和整理的)

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() 答案:A

2.如果finalize()方法抛出一个运行时异常,以下哪个描述正确? A.正在运行的应用程序系统崩溃 B.此异常被忽略,并且该异常对象被垃圾回收器回收 C.此异常被忽略,但是该异常对象未被垃圾回收期回收 D.此异常导致JVM崩溃 答案:B 答案解析:finalize()方法只是用于清除对象,而不是实际的销毁对象,因此对该方法的调用不会引起系统崩溃,该方法抛出的异常也会作为废弃对象被垃圾回收期回收

3.如何释放掉一个对象占据的内存空间? A.调用free()方法 B.调用System.gc()方法 C.赋值给该对象的引用为null D.程序员无法明确强制垃圾回收器运行 答案: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,那么抛出该异常的语句正确的是哪项? A.raise ServiceException B.throw new ServiceException() C.throw ServiceException D.throws ServiceException 答案:B

13.在方法

相关推荐: