Puzzle 11: The Last Laugh

最后的哈哈

以下代码片段运行之后, 会输出HaHa吗?

System.out.print("H" + "a");

System.out.println('H' + 'a');

运行一下先, 输出:

Ha169

想要输出HaHa的话, 这种改写方式较为简单 -- 在最左边加上空字串:

System.out.println("" + 'H' + 'a');

注意, Java的计算顺序(TODO 需要对应的JLS链接), 如果写成:

System.out.println('H' + 'a' + "");

输出的将仍然是169

对于+操作符, 只要有一个操作数为String类型, 那么就会按字符串连接计算. 如果不含有String类型, 那么数字字符的操作数和字符会

如:

System.out.println("2 + 2 = " + 2 + 2);

输出的是:

2 + 2 = 22

System.out.println("2 + 2 = " + (2 + 2));

输出的是:

2 + 2 = 4

  1. JLS 5.1.2 Widening Primitive Conversion
  2. JLS 5.6.2 Binary Numeric Promotion