ta jest taka sama dla wszystkich Long
, Integer
, a Short
Byte
. Wytłumaczę z Byte
przykład dlatego, że jest czytelny:
System.out.println(Byte.MIN_VALUE); // -128
System.out.println(Byte.MAX_VALUE); // 127
String positive = "1000000"; // 8 binary digits, +128
String negative = "-1000000"; // 8 binary digits, -128
String plus = "+1000000"; // 8 binary digits, +128
Byte.parseByte(positive, 2); //will fail because it's bigger than Byte.MAX_VALUE
Byte.parseByte(negative, 2); //won't fail. It will return Byte.MIN_VALUE
Byte.parseByte(plus, 2); //will fail because its bigger than Byte.MAX_VALUE
Cyfry interpretowane są niepodpisane, bez względu na to, co jest podstawa. Jeśli chcesz uzyskać wartość ujemną, musisz mieć znak minus na początku ciągu. JavaDoc mówi:
Przetwarza argument ciąg jako podpisał długo w radix określonym przez drugi argument. Wszystkie znaki w łańcuchu muszą być cyframi określonej podstawki (co określa, czy Character.digit(char, int)
zwraca wartość nieujemną), z tym wyjątkiem, że pierwszy znak może być być znakiem minus ASCII '-' ('\u002D')
, aby wskazać wartość ujemną lub znak ASCII plus '+' ('\u002B')
, aby wskazać wartość dodatnią. Wygenerowana długa wartość jest zwracana.
W celu uzyskania MAX_VALUE
musimy:
String max = "1111111"; // 7 binary digits, +127
// or
String max2 = "+1111111"; // 7 binary digits, +127
Ponowne przeczytanie tego, to właściwie dobre pytanie. –
+1 Dobre pytanie. –
To może być * interesujące * pytanie, ale z pewnością nie jest to [* dobre * pytanie] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist). – Jeroen