【问题标题】:09 is not recognized where as 9 is recognized [duplicate]09 不被识别,而 9 被识别[重复]
【发布时间】:2010-11-01 11:40:07
【问题描述】:

我正在使用石英进行调度。

TriggerUtils.getDateOf(0,40,18,09,06);

它接受 5 个参数。 (秒、分钟、小时、daysOfMonth、月)。

当我将第四个参数作为“09”传递时。 Eclipse 给我错误“int 类型的字面八进制 09(数字 9)超出范围”。

但是当我将第四个参数传递为“9”而不是“09”时,它可以工作。

谁能解释一下这个错误?

【问题讨论】:

  • 你知道整数 06 和 6 是一回事吧?
  • @matt:他将日期传递给函数,但没有意识到前面的 0 会将其转换为八进制数。
  • 如果我能通过 25,那为什么不能 09。
  • 我想我们都被那个咬了一两次。我认为在 30 年的编程中,我故意使用过一次八进制(以及无数次二进制和十六进制)。 Octal 的偏爱状态确实是一种倒退。
  • @Shashi: 25 是一个数字。 0 之前的数字表示您要使用八进制,因此您将进入不同的编号系统。仅适用于 0,因为您通常会删除 0。

标签: java integer octal


【解决方案1】:

在java中,如果你定义一个整数,一个前导的'0'表示你用八进制定义一个数字

int i = 07; //integer defined as octal
int i = 7; // integer defined as base 10
int i = 0x07; // integer defined as hex
int i = 0b0111; // integer defined as binary (Java 7+)

【讨论】:

  • 我不知道“0b”。这也适用于 C 语言吗?
  • 0b 前缀还不存在;它可能是对 Java 7 的扩展。
【解决方案2】:

Octal 中没有 9(前面的 0 会得到什么)。 0-7,仅限。

【讨论】:

    【解决方案3】:

    当您在数字前加上 0(“09”而不是“9”)时,Java(以及 C 和许多其他语言)会将数字解释为八进制 - 以 8 为基数。

    “09”不是八进制的有效数字 - 任何单个数字最多可以是“7”(因为在八进制中,数字从 0..7 开始)。

    【讨论】:

      【解决方案4】:

      以零数字开头的数字被视为八进制(以 8 为基数)字面量,9 不是有效的八进制数字。

      【讨论】:

        【解决方案5】:

        10 是你有多少个数字,而 010 是如果你不数你的拇指的话你得到的数字。

        【讨论】:

          猜你喜欢
          • 2021-11-22
          • 2022-01-06
          • 2021-10-19
          • 2012-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-17
          相关资源
          最近更新 更多