Почему toHexString печатает разные строки в очень специфических обстоятельствах?Печать числа ниже 0x80000000 работает просто отлично.Добавляя 1 к этому значению и печатая, он работает нормально.Но непосредственное присвоение этого значения не печатает одно и то же, вместо этого я должен добавить в конец букву L.
Я предполагаю, что это связано с тем фактом, что числовые литералы имеют тип int по умолчанию,но я не знаю, что это происходит в 0x80000000, а не при пересечении, например, 0xffffffff.
long a = 0x7FFFFFFF;
System.out.println(java.lang.Long.toHexString(a)); // prints 7fffffff
a++;
System.out.println(java.lang.Long.toHexString(a)); // prints 80000000
long b = 0x80000000;
System.out.println(java.lang.Long.toHexString(b)); // prints ffffffff80000000
b=0x80000000L;
system.out.println(java.lang.Long.toHexString(b)); // prints 80000000
PS Почему oracle или tutorialspoint ничего не говорято том, как методы реализованы?Где я могу найти реализацию стандартных библиотек?