juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2010-02-04 11:04 am

funny Java

byte b = Byte.parseByte("80", 16);

throws an exception "value out of range"

very, very smart...

[identity profile] ygam.livejournal.com 2010-02-04 07:05 pm (UTC)(link)
Does it have to be "-80"?

[identity profile] nowherenoone.livejournal.com 2010-02-04 07:12 pm (UTC)(link)
У меня вчера кинуло, когда я "192" запихнул. И её можно понять.
Но "80"???

[identity profile] nowherenoone.livejournal.com 2010-02-04 07:21 pm (UTC)(link)
Ай, 16 просмотрел :)

[identity profile] taganay.livejournal.com 2010-02-04 07:20 pm (UTC)(link)
Ну в принципе её (джаву) можно понять:
static byte MAX_VALUE: A constant holding the maximum value a byte can have, 2^7-1.

[identity profile] itman.livejournal.com 2010-02-04 07:33 pm (UTC)(link)
Да, а никто не обещал, что в байте будет восемь бит!
PS: но причина, конечно же, не в этом, а в том, что в Джаве просто нет беззнаковых числовых типов.
Edited 2010-02-04 19:36 (UTC)

[identity profile] ostapru.livejournal.com 2010-02-05 12:41 am (UTC)(link)
А причем здесь беззнаковые?
80 < 127 ? ;)

[identity profile] dmzlj.livejournal.com 2010-02-05 06:27 am (UTC)(link)
0x80

[identity profile] scolar.livejournal.com 2010-02-04 07:56 pm (UTC)(link)
Ну, если синтаксис языка допускает
byte b = (byte)0x80;

то не очень понятно, почему бы и не распарсить.

[identity profile] gaus.livejournal.com 2010-02-04 08:10 pm (UTC)(link)
спецификация не позволяет :(

[identity profile] taganay.livejournal.com 2010-02-04 08:14 pm (UTC)(link)
"byte" - это синтаксис, а "Byte" - это уже библиотека.
Хотя синтаксис уродский, согласен.

[identity profile] ostapru.livejournal.com 2010-02-05 12:42 am (UTC)(link)
Но там же вроде "80", а не "0x80"?

[identity profile] ivan-gandhi.livejournal.com 2010-02-05 01:13 am (UTC)(link)
Ну это же не Хаскель. Я ж указываю 16 в качестве основания.

[identity profile] ostapru.livejournal.com 2010-02-05 09:47 am (UTC)(link)
А блин! Доку надо смотреть - думал, что 16 - это типа maxlength.

[identity profile] itman.livejournal.com 2010-02-04 07:37 pm (UTC)(link)
В Джаве байт - это signed char. И типов unsigned просто нет.

[identity profile] baramin.livejournal.com 2010-02-04 10:09 pm (UTC)(link)
ну нет в Java байтов в С-шном понимании. С этим трудно жить, но лучше принять и смириться. На заре истории это казалось благом - тот, кто торгуется за последний бит готов переехать в следующий тип.