Java基础100到Java基础笔试考试题

c#小王子 c#小王子 2022-01-26 922 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.在方法声明中,说明该方法可能会抛出的异常列表时使用哪个关键字?

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();
  example.topGo();
 }
}

该代码的执行结果是?

A.输出late middle

B.输出catch

C.输出late middle catch

D.输出catch late middle

答案:B


16.如下代码执行后的输出结果是?

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"));
  } 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

答案解析:子类抛出的异常不符合方法覆盖的异常列表要求,因此编译失败(见上题)


19.现有如下代码:

public class Example {
 public static void main(String[] args) {// a
  new Example().topGo();
 }

 void topGo() {// b
  middleGo();
 }

 void middleGo() {// c
  go();
  System.out.println("late middle");
 }

 void go() {// d
  throw new Exception();
 }
}

为了使代码能够编译通过,需要在哪个地方加入声明throws Exception?

A.d

B.c和d

C.b、c和d

D.a、b、c和d

答案:D


20.下面代码的执行结果是?

class Example extends Utils {
 public static void main(String[] args) {
  try {
   System.out.print(new Example().getlnt("42"));
  } catch (Exception e) {
   System.out.println("Exc");
  }
 }

 int getlnt(String arg) throws Exception {
  return Integer.parseInt(arg);
 }
}

class Utils {
 int getlnt() {
  return 42;
 }
}

A.NFExc

B.42.0

C.42NFExc

D.编译失败

答案:B

答案解析:本题没有实现方法覆盖


百度网盘链接:https://pan.baidu.com/s/1j2F55Hq9F2JRCDu03iaUbQ

提取码:bhq3



相关文章


使用-JFreeChart来创建基于web的图表

使用-JFreeChart来创建基于web的图表

XStream使用文档

XStream使用文档

WebService发布过程及常见问题

WebService发布过程及常见问题

webpack实战入门进阶调优分享

webpack实战入门进阶调优分享

weblogic调优参数及监控指标

weblogic调优参数及监控指标

weblogic节点管理

weblogic节点管理

weblogic管理控制台概述

weblogic管理控制台概述

weblogic-部署和启动

weblogic-部署和启动

WebLogic-Server-性能及调优-调优-Java-虚拟机

Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。

Velocity用户教程

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

Velocity用户手册

Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。


文章热度: 166291
文章数量: 333
推荐阅读

FlashFXP绿色版网盘下载,附激活教程 1781

FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具

Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1564

firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ

navicat for mysql中文绿色版网盘下载 1623

Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq

火车头采集器(旗舰版)绿色版网盘下载 1707

火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA

Photoshop(CS-2015-2023)绿色中文版软件下载 1823

安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64

知之

知之平台是全球领先的知识付费平台。提供各个领域的项目实战经验分享,提供优质的行业解决方案信息,来帮助您的工作和学习

使用指南 建议意见 用户协议 友情链接 隐私政策 Powered by NOOU ©2020 知之