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

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

难度等级: 中等

预测以下 Java 程序的输出:

问题

问题一

public class Calculator
{
  int num = 100;
  public void calc(int num) { this.num = num * 10; }
  public void printNum()   { System.out.println(num); }
  public static void main(String[] args)
  {
    Calculator obj = new Calculator();
    obj.calc(2);
    obj.printNum();
  }
}

选项:

A) 20

B) 100

C) 1000

D) 2


点此跳转到答案


问题二

public class MyStuff
{
  String name;
  MyStuff(String n) { name = n; }
  public static void main(String[] args)
  {
    MyStuff m1 = new MyStuff("guitar");
    MyStuff m2 = new MyStuff("tv");
    System.out.println(m2.equals(m1));
  }
  @Override
  public boolean equals(Object obj)
  {
    MyStuff m = (MyStuff) obj;
    if (m.name != null) { return true; }
    return false;
  }
}

选项:

A) 输出为真,MyStuff 履行 Object.equals() 合同。

B) 输出为假并且 MyStuff 履行 Object.equals() 合同。

C) 输出为真并且 MyStuff 不履行 Object.equals() 合同。

D) 输出为假并且 MyStuff 不履行 Object.equals() 合同。

点此跳转到答案

问题三

class Alpha
{
  public String type = "a ";
  public Alpha() { System.out.print("alpha "); }
}
public class Beta extends Alpha
{
  public Beta() { System.out.print("beta "); }
  void go()
  {
    type = "b ";
    System.out.print(this.type + super.type);
  }
  public static void main(String[] args)
  {
    new Beta().go();
  }
}

选项:

A) alpha beta bb

B) alpha beta ab

C) beta alpha bb

D) beta alpha ab

点此跳转到答案

问题四

public class Test
{
  public static void main(String[] args)
  {
    StringBuilder s1 = new StringBuilder("Java");
    String s2 = "Love";
    s1.append(s2);
    s1.substring(4);
    int foundAt = s1.indexOf(s2);
    System.out.println(foundAt);
  }
}

选项:

A) -1

B) 3

C) 4

D)在运行时抛出StringIndexOutOfBoundsException。

点此跳转到答案

问题五

class Writer
{
  public static void write()
  {
    System.out.println("Writing...");
  }
}
class Author extends Writer
{
  public static void write()
  {
    System.out.println("Writing book");
  }
}
public class Programmer extends Author
{
  public static void write()
  {
    System.out.println("Writing code");
  }
  public static void main(String[] args)
  {
    Author a = new Programmer();
    a.write();
  }
}

选项:

A) Writing…

B) Writing book

C) Writing code

D) Compilation fails

点此跳转到答案

放张可爱妹子的图缓解一下眼睛疲劳,文章后半部分是程序的输出及解析

微信截图_20231124163532.png

输出及解析

问题一答案

A) 20

解释:

这里的类实例变量名(num) 与calc()方法的局部变量名(num) 相同。所以为了从calc()方法引用类实例变量,使用了这个关键字。所以在this.num = num * 10语句中,num代表方法的局部变量,其值为 2,this.num代表类实例变量,其初始值为 100。现在在printNum()方法中,因为它没有局部变量name 与类实例变量相同,所以我们可以直接使用num引用实例变量,虽然可以使用this.num。


问题二答案

答案:

C) 输出为真,MyStuff 不履行 Object.equals() 合同。

说明:

作为Object类中的equals(Object obj)方法,根据等价关系比较两个对象。但是这里我们只是确认对象是否为空,所以它不履行Object.equals()合同。由于m1不为空,因此将打印 true。

问题三答案

答案:

A) alpha beta bb

解释:

语句new Beta().go()分两个阶段执行。在第一阶段Beta类构造函数被调用。Beta类中不存在实例成员。所以现在执行Beta类构造函数。由于Beta类扩展了Alpha类,因此调用Alpha类构造函数,因为默认情况下(编译器放置的)第一条语句是Beta类构造函数中的super()。现在,由于Alpha类中存在一个实例变量(type),因此它将获得内存,现在Alpha类构造函数被执行,然后调用返回到Beta类构造函数的 next 语句。所以打印了alpha beta。

在第二阶段,在这个对象上调用go()方法。由于对象中只有一个变量(类型),其值为a。所以会改成b,打印两次。这里的super 关键字没有用。


问题四答案

答案:

 C) 4

说明:

append(String str)方法,将 str 连接到s1。的子(INT指数)方法从给定的索引到端返回字符串。但是由于没有任何 String 变量来存储返回的字符串,所以它会被销毁。 现在indexOf(String s2)方法返回s2第一次出现的索引。所以 4 被打印为 s1="JavaLove"。

问题五答案

答案:

B) Writing book

说明:

由于静态方法不能被覆盖,创建哪个类对象并不重要。由于a是Author引用类型,所以总是调用Author类方法。如果我们从Author类中删除write()方法,则调用Writer类方法,因为Author类扩展了Writer类。

目录
相关文章
|
机器学习/深度学习 JSON Java
Java调用Python的5种实用方案:从简单到进阶的全场景解析
在机器学习与大数据融合背景下,Java与Python协同开发成为企业常见需求。本文通过真实案例解析5种主流调用方案,涵盖脚本调用到微服务架构,助力开发者根据业务场景选择最优方案,提升开发效率与系统性能。
2457 0
Java的CAS机制深度解析
CAS(Compare-And-Swap)是并发编程中的原子操作,用于实现多线程环境下的无锁数据同步。它通过比较内存值与预期值,决定是否更新值,从而避免锁的使用。CAS广泛应用于Java的原子类和并发包中,如AtomicInteger和ConcurrentHashMap,提升了并发性能。尽管CAS具有高性能、无死锁等优点,但也存在ABA问题、循环开销大及仅支持单变量原子操作等缺点。合理使用CAS,结合实际场景选择同步机制,能有效提升程序性能。
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
423 2
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
468 98
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
724 100
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
缓存 安全 Java
Java并发性能优化|读写锁与互斥锁解析
本文深入解析Java中两种核心锁机制——互斥锁与读写锁,通过概念对比、代码示例及性能测试,揭示其适用场景。互斥锁适用于写多或强一致性场景,读写锁则在读多写少时显著提升并发性能。结合锁降级、公平模式等高级特性,助你编写高效稳定的并发程序。
572 0
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。

推荐镜像

更多
  • DNS