Почему Java зафиксировал размер типа данных в отличие от C

Если Вы намереваетесь считать csv из Excel, то существуют некоторые интересные угловые случаи. Я не могу помнить их всех, но апачское свободное городское население csv не был способен к обработке его правильно (с, например, URL).

убедиться протестировать вывод Excel с кавычками и запятыми и наклонными чертами повсеместно.

8
задан Brian Tompsett - 汤莱恩 19 November 2015 в 16:46
поделиться

6 ответов

The JVM (Java Virtual Machine) is designed to be platform independent. If data type sizes were different across platforms, then cross-platform consistency is sacrificed.

The JVM isolates the program from the underlying OS and platform. This can make life difficult for performing system-specific work, but the benefits are that you can write-once, run-anywhere (this is largely true, with some unfortunate issues. Write-once, test-everywhere is a much more practical approach).

19
ответ дан 5 December 2019 в 04:52
поделиться

If data type size varies on different platforms you lose portability.

14
ответ дан 5 December 2019 в 04:52
поделиться

To get a really comprehensive answer to this, you'd need to do a great deal of historical reading from the early days of Java. Certainly, the designers could have included a more complicated primitive type system. However, when Java burst onto the broad stage, it was aimed at applets. Code to run in a browser, organizing complex UI, didn't (and doesn't) need to know whether it is running on the infamous MNS-49 (7 7-bit chars per word), or the Honeywell 68000 (4 9-bit chars per word), or a boring modern processor. It's much more important than anyone can code bit arithmetic on an int and know what's going to happen after 32 shifts.

3
ответ дан 5 December 2019 в 04:52
поделиться

Гибкость C для этого имеет некоторые преимущества (снижение потребления памяти / хранилища, если вы используете 32 бита вместо 64), но эти преимущества, как правило, становятся менее актуальными по мере улучшения оборудования (это было

Эта гибкость, однако, сопровождается серьезной совместимостью и долгосрочными проблемами зрения (ошибки Y 2038).

Напротив, объект Java в любом случае имеет некоторые накладные расходы на хранилище, поэтому экономия 4 байта на каждую дату объект был бы совершенно бессмысленным и неприятным.

1
ответ дан 5 December 2019 в 04:52
поделиться

Идея java заключалась в том, чтобы «написать один раз, запустить где угодно» без перекомпиляции. Это означает, что каждая виртуальная машина имеет одинаковый размер данных. Конечно, на 64-битных машинах он использует 64-битные ссылки, но у вас нет доступа к ним, поэтому это не имеет значения.

Это работает довольно хорошо, но я очень хочу, чтобы мы могли получить индексы 64-битных массивов. Раньше это не имело большого значения, но для больших файлов с отображением памяти это огромная боль. Вы должны разбить их на куски по 2 ГБ.

1
ответ дан 5 December 2019 в 04:52
поделиться

Потому что это Java. См. спецификацию языка Java .

1
ответ дан 5 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

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