Какое максимальное значение может хранить длина данных Java long? [Дубликат]

В то время как обещания и обратные вызовы хорошо работают во многих ситуациях, боль в задней части выражает нечто вроде:

if (!name) {
  name = async1();
}
async2(name);

. В итоге вы пройдете через async1; проверьте, не определено ли name или нет, и соответственно вызовите обратный вызов.

async1(name, callback) {
  if (name)
    callback(name)
  else {
    doSomething(callback)
  }
}

async1(name, async2)

Хотя в в порядке хорошо , это раздражает, когда у вас много подобных случаев и обработка ошибок.

Fibers помогает в решении проблемы.

var Fiber = require('fibers')

function async1(container) {
  var current = Fiber.current
  var result
  doSomething(function(name) {
    result = name
    fiber.run()
  })
  Fiber.yield()
  return result
}

Fiber(function() {
  var name
  if (!name) {
    name = async1()
  }
  async2(name)
  // Make any number of async calls from here
}

Вы можете проверить проект здесь .

2
задан Raedwald 13 July 2013 в 19:21
поделиться

3 ответа

Вы должны использовать 4545454545l или 4545454545L, чтобы квалифицировать его как long. По умолчанию, 4545454545 является int литералом, а 4545454545 находится вне диапазона int.

Рекомендуется использовать прописной алфавит L, чтобы избежать путаницы, поскольку l и 1 выглядят довольно похоже

Вы можете сделать:

if(Long.valueOf(4545454545l).equals(Long.parseLong(morse)) ){
     System.out.println("2");
}

ИЛИ

if(Long.parseLong(morse) == 4545454545l){
   System.out.println("2");
}

В соответствии с JLS 3.10.1 :

Целочисленный литерал имеет тип long, если он суффикс с буквой ASCII L или l (ell); в противном случае это тип int (п. 4.2.1).

14
ответ дан NINCOMPOOP 27 August 2018 в 15:07
поделиться

Если ваше целочисленное значение больше, чем 2147483647, в качестве вашего литерала вам нужно использовать длинный литерал:

4545454545L

... обратите внимание на L в конце, что является разницей между длинным и int-литералом. В нижнем регистре l тоже работает, но он менее читабельен, так как его легко путать с 1 (неважно, когда вы имеете дело с номером!) [/ ​​G2]

3
ответ дан Michael Berry 27 August 2018 в 15:07
поделиться

Вы должны использовать 4545454545L или 4545454545l, чтобы квалифицировать его как долго.

0
ответ дан nachokk 27 August 2018 в 15:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: