Long.MAX_VALUE is 9223372036854775807 (9,223,372,036,854,775,807 or 263-1).
If you were executing your function once per nanosecond, it would still take over 292 years to encounter this situation according to this source.
When that happens, it'll just wrap around to Long.MIN_VALUE which is -9223372036854775808 (-9,223,372,036,854,775,808 or -263) as others have said.
Long.MAX_VALUE is 9223372036854775807 (9,223,372,036,854,775,807 or 263-1).
If you were executing your function once per nanosecond, it would still take over 292 years to encounter this situation according to this source.
When that happens, it'll just wrap around to Long.MIN_VALUE which is -9223372036854775808 (-9,223,372,036,854,775,808 or -263) as others have said.
It will overflow and wrap around to Long.MIN_VALUE.
Its not too likely though. Even if you increment 1,000,000 times per second it will take about 300,000 years to overflow.
That method can't return true. That's the point of Long.MAX_VALUE. It would be really confusing if its name were... false. Then it should be just called Long.SOME_FAIRLY_LARGE_VALUE and have literally zero reasonable uses. Just use Android's isUserAGoat, or you may roll your own function that always returns false.
Note that a long in memory takes a fixed number of bytes. From Oracle:
long: The long data type is a 64-bit signed two's complement integer. It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of 9,223,372,036,854,775,807 (inclusive). Use this data type when you need a range of values wider than those provided by int.
As you may know from basic computer science or discrete math, there are 2^64 possible values for a long, since it is 64 bits. And as you know from discrete math or number theory or common sense, if there's only finitely many possibilities, one of them has to be the largest. That would be Long.MAX_VALUE. So you are asking something similar to "is there an integer that's >0 and < 1?" Mathematically nonsensical.
If you actually need this for something for real then use BigInteger class.
You can't. If you have a method called isBiggerThanMaxLong(long) it should always return false.
If you were to increment the bits of Long.MAX_VALUE, the next value should be Long.MIN_VALUE. Read up on twos-complement and that should tell you why.
I’ve tried looking for definitive answers but the only difference I see seems to be based on the precision of the numbers?
Which data type is larger and which one is smaller?
if (value >= 0 && value < Math.pow(10, MAX))
Use log base 10 to get the number of digits in a base 10 number
if ((int)(Math.log10(value) + 1) <= MAX) {
...
}
If you don't have access to log10, you can use normal log to do this:
int length = (int)(Math.log(value) / Math.log(10)) + 1;
if (length <= MAX) {
...
}
Note this also works for any base, so using the second method above, you can replace the 10 with any base and you have the length of that number in the given base