【Java练习题】Java 程序的输出 | 第十一套(含解析)

简介: 【Java练习题】Java 程序的输出 | 第十一套(含解析)

难度级别: 中级

程序

程序一

预测以下 Java 程序的输出:

:public class Base{
  private int data;
  public Base(){
    data = 5;
  }
  public int getData(){
    return this.data;
  }
}
class Derived extends Base{
  private int data;
  public Derived(){
    data = 6;
  }
  private int getData(){
    return data;
  }
  public static void main(String[] args){
    Derived myData = new Derived();
    System.out.println(myData.getData());
  }
}

a) 6

b) 5

c) 编译时错误

d) 运行时错误



程序二

public class Test{
  private int data = 5;
  public int getData()  {
    return this.data;
  }
  public int getData(int value) {
    return (data+1);
  }
  public int getData(int... value)  {
    return (data+2);
  }
  public static void main(String[] args)  {
    Test temp = new Test();
    System.out.println(temp.getData(7, 8, 12));
  }
}

a) 编译时或运行时错误

b) 8

c) 10

d) 7



程序三

public class Base{
  private int multiplier(int data){
    return data*5;
  }
}
class Derived extends Base{
  private static int data;
  public Derived(){
    data = 25;
  }
  public static void main(String[] args){
    Base temp = new Derived();
    System.out.println(temp.multiplier(data));
  }
}

a) 125

b) 25

c) 运行时错误

d) 编译时错误



问题四

以下关于 finally 块的说法错误的是?

a) 对于每个 try 块,只能有 1 个 finally 块。

b) 如果程序通过调用 System.exit() 退出,则 finally 块将不会被执行;

c) 如果在 catch 语句中没有处理异常,在终止程序之前,JVM 会执行 finally 块

d) finally 块包含重要的代码段,因此 finally 块中的代码在 java 中存在/不存在 try 块的情况下执行代码。


程序五

import java.io.IOException;
import java.util.EmptyStackException;
public class newclass{
  public static void main(String[] args){
    try{
      System.out.printf("%d", 1);
      throw(new Exception());
    }
    catch(IOException e){
      System.out.printf("%d", 2);
    }
    catch(EmptyStackException e){
      System.out.printf("%d", 3);
    }
    catch(Exception e){
      System.out.printf("%d", 4);
    }
    finally{
      System.out.printf("%d", 5);
    }
  }
}

a) 12345

b) 15

c) 135

d) 145



程序六

public class javaclass{
  static{
    System.out.printf("%d", 1);
  }
  static{
    System.out.printf("%d", 2);
  }
  static{
    System.out.printf("%d", 3);
  }
  private static int myMethod(){
    return 4;
  }
  private int function(){
    return 5;
  }
  public static void main(String[] args){
    System.out.printf("%d", (new javaclass()).function() + myMethod());
  }
}

a) 123

b) 45

c) 12345

d) 1239



文章后半部分是程序的输出及解析

image.png


输出及解析

程序一输出

答案

(c)

说明

当覆盖超类的方法时,子类中的方法声明不能比超类中声明的方法更严格。

程序二输出

答案

(d)

说明

当您不知道输入参数的数量但知道参数的类型(在本例中为 int)时,(int... values) 作为参数传递给方法。当在 main 方法中创建一个新对象时,变量数据被初始化为 5。对具有属性 (7, 8 ,12) 的 getData() 方法的调用会调用第三个 getData() 方法,该方法会增加值数据变量乘以 2 并返回 7。

程序三输出

答案

(d)

说明

由于方法乘数被标记为私有,因此它不是继承的,因此对派生者不可见。

程序四答案

回答 :

(d)

说明

语句(d) 是错误的,因为finally 块只有在try 或catch 块成功时才能存在。使用没有 try 块的 finally 块会产生编译时错误。

程序五答案

回答 :

(d)

说明:

catch 语句的编写顺序是:更具体到更一般。在上面的代码中,抛出了一个 Exception 类型的新异常。首先,代码跳转到第一个 catch 块以查找异常处理程序。但是由于 IOException 不是同一类型,它向下移动到第二个 catch 块,最后移动到第三个,在那里捕获异常并打印 4。因此,答案是 145,因为按照块的执行顺序是:try->catch->finally。

程序六答案

回答 :

(d)

说明:

Java 中的静态块甚至在编译器调用 main 之前就已执行。在main方法中,新建一个javaclass对象,调用它的function()方法返回5,静态方法myMethod()返回4,即4+5=9。因此,程序的输出为1239,因为 123 甚至在 main 方法执行之前就被打印在控制台上,并且 main 方法在执行时返回 9。


以上就是本篇文章的所有内容了


目录
相关文章
|
29天前
|
Java
Java的CAS机制深度解析
CAS(Compare-And-Swap)是并发编程中的原子操作,用于实现多线程环境下的无锁数据同步。它通过比较内存值与预期值,决定是否更新值,从而避免锁的使用。CAS广泛应用于Java的原子类和并发包中,如AtomicInteger和ConcurrentHashMap,提升了并发性能。尽管CAS具有高性能、无死锁等优点,但也存在ABA问题、循环开销大及仅支持单变量原子操作等缺点。合理使用CAS,结合实际场景选择同步机制,能有效提升程序性能。
|
13天前
|
机器学习/深度学习 JSON Java
Java调用Python的5种实用方案:从简单到进阶的全场景解析
在机器学习与大数据融合背景下,Java与Python协同开发成为企业常见需求。本文通过真实案例解析5种主流调用方案,涵盖脚本调用到微服务架构,助力开发者根据业务场景选择最优方案,提升开发效率与系统性能。
147 0
|
8天前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
262 100
|
1月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
2月前
|
人工智能 Cloud Native Java
2025 年 Java 应届生斩获高薪需掌握的技术实操指南与实战要点解析
本指南为2025年Java应届生打造,涵盖JVM调优、响应式编程、云原生、微服务、实时计算与AI部署等前沿技术,结合电商、数据处理等真实场景,提供可落地的技术实操方案,助力掌握高薪开发技能。
162 2
|
1月前
|
缓存 安全 Java
Java并发性能优化|读写锁与互斥锁解析
本文深入解析Java中两种核心锁机制——互斥锁与读写锁,通过概念对比、代码示例及性能测试,揭示其适用场景。互斥锁适用于写多或强一致性场景,读写锁则在读多写少时显著提升并发性能。结合锁降级、公平模式等高级特性,助你编写高效稳定的并发程序。
138 0
|
13天前
|
安全 Java API
Java SE 与 Java EE 区别解析及应用场景对比
在Java编程世界中,Java SE(Java Standard Edition)和Java EE(Java Enterprise Edition)是两个重要的平台版本,它们各自有着独特的定位和应用场景。理解它们之间的差异,对于开发者选择合适的技术栈进行项目开发至关重要。
66 1
|
1月前
|
存储 缓存 算法
Java数据类型与运算符深度解析
本文深入解析Java中容易混淆的基础知识,包括八大基本数据类型(如int、Integer)、自动装箱与拆箱机制,以及运算符(如&与&&)的使用区别。通过代码示例剖析内存布局、取值范围及常见陷阱,帮助开发者写出更高效、健壮的代码,并附有面试高频问题解析,夯实基础。
|
1月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
194 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
1月前
|
算法 Java 测试技术
零基础学 Java: 从语法入门到企业级项目实战的详细学习路线解析
本文为零基础学习者提供完整的Java学习路线,涵盖语法基础、面向对象编程、数据结构与算法、多线程、JVM原理、Spring框架、Spring Boot及项目实战,助你从入门到进阶,系统掌握Java编程技能,提升实战开发能力。
110 0

热门文章

最新文章

推荐镜像

更多
  • DNS