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

本文涉及的产品
云解析DNS-重点域名监控,免费拨测 20万次(价值200元)
简介: 【Java练习题】Java程序的输出 | 第五套(含解析)

难度等级: 中等

预测以下 Java 程序的输出:

问题

问题一

// Main.java
public class Main
{
  public static void gfg(String s)
  { 
    System.out.println("String");
  }
  public static void gfg(Object o)
  {
    System.out.println("Object");
  }
  public static void main(String args[])
  {
    gfg(null);
  }
} //end class

点此跳转到答案

问题二

// Main.java
public class Main
{
  public static void gfg(String s)
  { 
    System.out.println("String");
  }
  public static void gfg(Object o)
  {
    System.out.println("Object");
  }
  public static void gfg(Integer i)
  {
    System.out.println("Integer");
  }
  public static void main(String args[])
  {
    gfg(null);
  }
} //end class

点此跳转到答案

问题三

// Main.java
public class Main
{
  public static void main(String args[])
  {
    String s1 = "abc";
    String s2 = s1;
    s1 += "d";
    System.out.println(s1 + " " + s2 + " " + (s1 == s2));
    StringBuffer sb1 = new StringBuffer("abc");
    StringBuffer sb2 = sb1;
    sb1.append("d");
    System.out.println(sb1 + " " + sb2 + " " + (sb1 == sb2));
  }
} //end class

点此跳转到答案

问题四

// Main.java
public class Main
{
  public static void main(String args[])
  {
    short s = 0;
    int x = 07;
    int y = 08;
    int z = 112345;
    s += z;
    System.out.println("" + x + y + s);
  }
} //end class

点此跳转到答案


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


1.png

输出及解析

问题一答案

输出:

String

说明:在方法重载的情况下,在编译时选择最具体的方法。因为"java.lang.String"是比"java.lang.Object"更具体的类型。在这种情况下,选择将"String"作为参数的方法。

问题二答案

输出:

Compile Error at line 19.

说明:在方法 Overloading 的情况下,在编译时选择最具体的方法。 因为 'java.lang.String' 和 'java.lang.Integer' 是比 'java.lang.Object' 更具体的类型,但在 'java.lang.String' 和 'java.lang.Integer' 之间没有更多具体的。 在这种情况下,Java 无法决定调用哪个方法。

问题三答案

输出:

abcd abc false
abcd abcd true

说明:在 Java 中,String 是不可变的,而字符串缓冲区是可变的。 所以字符串 s2 和 s1 都指向同一个字符串 abc。并且,在进行更改后,字符串 s1 指向 abcd,s2 指向 abc,因此为 false。在字符串缓冲区中,sb1 和 sb2 都指向同一个对象。由于字符串缓冲区是可变的,因此对一个字符串进行更改也会对另一个字符串进行更改。因此,在对对象进行更改后,两个字符串仍指向同一个对象(此处为 sb2)。

问题四答案

输出:

Compile Error at line 8

说明:

  1. 在第 12 行中 println 中的“”导致数字自动转换为字符串。所以它不做加法,而是作为字符串附加在一起。
  2. 在第 11 行中,+= 会自动转换为短路。但是数字 123456 不能包含在一个 short 中,所以你最终得到一个负值 (-7616)。 (注意 - 短 2 个字节 -32,768 到 32,767),这里的数字 123456 并不意味着 int z 的值,它显示了 int 值 3的长度。另外两个是红鲱鱼,因为代码永远不会编译到第 8 行。 任何以零开头的数字都被视为八进制数(即 0-7)。


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

推荐镜像

更多
  • DNS