Использование модуля проверки языка для python - & ldquo; не удается найти Java & rdquo; ошибка

Строки в Java неизменяемы. Это означает, что всякий раз, когда вы пытаетесь изменить / изменить строку, вы получаете новый экземпляр. Вы не можете изменить исходную строку. Это сделано для того, чтобы эти экземпляры строк могли кэшироваться. Типичная программа содержит множество ссылок на строки и кеширование этих экземпляров, что может уменьшить объем памяти и увеличить производительность программы.

При использовании оператора == для сравнения строк вы не сравниваете содержимое строки , но фактически сравнивают адрес памяти. Если они равны, в противном случае они вернут true и false. Если значение равно в строке, сравнивает содержимое строки.

Итак, вопрос в том, что все строки кэшируются в системе, как получается == возвращает false, тогда как equals возвращает true? Ну, это возможно. Если вы создадите новую строку, например String str = new String("Testing"), вы создадите новую строку в кеше, даже если в кеше уже содержится строка с тем же содержимым. Короче говоря, "MyString" == new String("MyString") всегда будет возвращать false.

Java также говорит о функции intern (), которая может использоваться в строке, чтобы сделать ее частью кеша, поэтому "MyString" == new String("MyString").intern() вернет true.

Примечание: == оператор намного быстрее, чем равен только потому, что вы сравниваете два адреса памяти, но вы должны быть уверены, что код не создает новые экземпляры String в коде. В противном случае вы столкнетесь с ошибками.

0
задан Amelia Blackwell 10 March 2019 в 17:50
поделиться

1 ответ

Примечание: я добавляю это как фактический ответ, потому что вопрос был решен в комментариях.

Ваш вопрос говорит:

Также Я делаю это на repl.it, а не на IDLE.

Это означает, что вам нужно установить этот модуль и все его предпосылки в среду repl.it, а не на локальный компьютер.

На предоставленной вами ссылке BitBucket в разделе «Предварительные условия» на странице написано:

LanguageTool требует Java 6 или более поздней версии.

Так что вам нужно будет убедиться, что Java как-то установлена ​​в вашей среде repl.it. Я не знаю, возможно ли это или нет. В качестве альтернативы вы можете просто установить этот пакет и все его предварительные условия локально.

0
ответ дан Daniel Pryden 10 March 2019 в 17:50
поделиться
Другие вопросы по тегам:

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