【问题标题】:Why output is not 311? [duplicate]为什么输出不是 311? [复制]
【发布时间】:2021-01-25 09:58:44
【问题描述】:
public class Main
{
    public static void main(String[] args) {
        char a='3';
        int b=011;
        System.out.println(a+b);
    }
}

输出为 60

有人能解释一下为什么 java 会这样吗?

【问题讨论】:

  • 如果你能告诉我们为什么你认为它应该是 311。你的理由是什么? 011 是八进制的 9(十进制)
  • 先转成字符串
  • charint 都是数字类型。带有前导零的数字文字被解释为八进制,因此011 实际上是9char 3 在 ascii 系统中的十进制值为 51。然后你的代码打印出51+9

标签: java string concatenation


【解决方案1】:

以零开头的文字是八进制文字。任何以 0 为前缀的数字都被视为 八进制八进制数字只能使用数字 0-7,就像十进制可以使用 0-9,二进制可以使用 0-1。在 Java 中将整数字面量定义为八进制值很容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    相关资源
    最近更新 更多