📜  Java棘手的输出问题

📅  最后修改于: 2022-05-13 01:54:25.077000             🧑  作者: Mango

Java棘手的输出问题

问题1:以下代码的输出是什么:

public class A {
    public static void main(String[] args)
    {
        if (true)
            break;
    }
}

选择:

  • a) 没有
  • b) 错误

答案: b) 错误
原因: Break 语句只能与循环或开关一起使用。因此,在 if 语句中使用 break 会导致“break outside switch or loop”错误。

问题2:以下代码的输出是什么:

public class A {
    public static void main(String[] args)
    {
        System.out.println('j' + 'a' + 'v' + 'a');
    }
}

选择:

  • 一) Java
  • b) 别的东西(除了简单的连接)

答案: b) 别的东西(除了简单的串联)
原因:如果使用字符串字面量(在双引号中),将打印“ Java ”,但在问题中由于使用了字符字面量,这些不会被连接。因此程序执行后,会得到一个字符的每一个等价的ASCII(Unicode)值相加。
因此输出为106 + 97 + 118 + 97 = 418

问题 3:以下代码的输出是什么:

public class A {
    public static void main(String[] args)
    {
        int $_ = 5;
    }
}

选择:

  • a) 没有
  • b) 错误

答案: a) 没有
原因:看起来 $ 会导致错误,但不会。在Java中,标识符规则说,标识符可以以任何字母或下划线(“_”)或美元(“$”)开头。所以答案是Nothing。

问题 4:以下代码的输出是什么:

public class Demo{
    public static void main(String[] arr){
        Integer num1 = 100;
        Integer num2 = 100;
        Integer num3 = 500;
        Integer num4 = 500;
          
        if(num1==num2){
            System.out.println("num1 == num2");
        }
        else{
            System.out.println("num1 != num2");
        }
        if(num3 == num4){
            System.out.println("num3 == num4");
        }
        else{
            System.out.println("num3 != num4");
        }
    }
}

选择:

  • a) 数字 1 == 数字 2
    数字 3 == 数字 4
  • b) 数字 1 == 数字 2
    数字 3 != 数字 4
  • c) 数字 1 != 数字 2
    数字 3 == 数字 4
  • d) 数字 1 != 数字 2
    数字 3 != 数字 4

答案: b)num1 == num2
数字 3 != 数字 4
原因:我们一直认为,每当使用“==”比较两个对象引用时,结果总是“假”。但是这里整数缓存会改变结果。整数类的缓存范围为 -128 到 127。只要数字介于此范围之间并且使用自动装箱,它就会分配相同的引用。这就是为什么对于值 100,num1 和 num2 将具有相同的引用,但对于值 500(不在 -128 到 127 的范围内),num3 和 num4 将具有不同的引用。

问题 5:以下代码的输出是什么:

public class Demo{
    public static void main(String[] arr){
          
    }
    public static void main(String arr){
          
    }
}

选择:

  • a) 没有
  • b) 错误

答案: a) 没有
原因:我们也可以重载 main()。但是 JVM 将始终调用具有 String[] 参数的 main()。

更多Java输出问题