Вопрос на StackOverflow с 870 тыс. просмотров: что такое «символ не найден»?

Java

Привет, я Молчаливый Ван Эр, программист ростом с Хуан Цзяджу и красивым, как Энди Лау. Чтобы выводить более качественный контент, я должен сначала ввести больше контента, поэтому я выбираю Stack Overflow в качестве первого фронта обучения, в конце концов, многие большие коровы настоятельно рекомендуются. В этой статье давайте рассмотрим проблему попадания 870k+ — что такое «символ не найден», что это значит, как это происходит и как это исправить.

Несколько дополнительных предложений BB. Настойчивость в письме с годами действительно выросла очень быстро, я предлагаю вам тоже принять меры - я твердо верю, что учиться не нужно, а нужно!

На картинке выше — сообщение в WeChat, отправленное мне предыдущим руководителем, похоже, он тоже видел мой рост. (Случайно раскрыл свое настоящее имя)

Если есть что-то еще, что вы хотели бы увидеть или узнать больше, пожалуйста, оставьте сообщение в разделе комментариев! Я буду, я могу написать, я очень рад поделиться этим и расти вместе с вами! Далее давайте посмотрим на текст.

01. Что означает ошибка «символ не найден»

Давайте сначала посмотрим на кусок кода:

String s = String();

Некоторый опыт Java-программиста должен быть в состоянии обнаружить ошибку в приведенном выше коде, в нем отсутствуетnewключевые слова. Поэтому этот код не пройдет на этапе компиляции.

Когда мы игнорируем ошибку компиляции и пытаемся запустить ее, программа выдает следующую ошибку.

«Символ не найден» означает, что либо в исходном коде есть очевидная ошибка, либо что-то не так с тем, как он был скомпилирован. Словом, компилятор смущают призраки наших программистов, он немного бессилен и невинен.

02. Как происходит «Не удается найти символ»

1) Орфографические ошибки

В конце концов, программисты тоже люди, а люди совершают ошибки.

  • Слова с ошибками, такие как StringBuilder как StringBiulder.
StringBuilder sb = new StringBiulder(); // 找不到符号,类 StringBiulder
  • Неправильный ввод заглавных букв, например, StringBuilder пишется как Stringbuilder.
StringBuilder sb = new Stringbuilder(); // 找不到符号,类 Stringbuilder

2) Необъявленная переменная

Иногда мы используем переменную, не объявляя ее.

System.out.println(sss); // 找不到符号,变量 sss

Или переменная выходит за пределы области видимости.

for (int i = 0; i < 100; i++);
{
    System.out.println("i is " + i);
}

В приведенном выше коде нелегко найти ошибки, потому что это просто лишний ";" перед "{". ";" приводит к тому, что тело цикла for разбивается на две части, а i в "{}" превышает диапазон i, определенный в "()".

3) Метод используется неправильно или не существует

Например, как Java получает длину массивов и строк? длина или длина ()?

String[] strs = {"沉默王二"};
System.out.println(strs.length()); // 找不到符号,方法 length()

String str = "沉默王二";
System.out.println(str.length); // 找不到符号,变量 length

4) Забыли импортировать класс

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

StringUtils.upperCase("abcd");// 找不到符号,类 StringUtils

Однако IDEA может настроить автоматический импорт классов, чтобы избежать этой ошибки.

. . . . . .

Причины ошибки «Не удается найти символ» различны, и вышеизложенное — лишь малая часть из них. Корень проблемы кроется в самих программистах: с накоплением опыта программирования и с помощью интегрированных средств разработки эти ошибки легко обнаруживаются на этапе написания кода.

03. Как исправить ошибку «Не удается найти символ»

Вообще говоря, очень просто исправить ошибку «не удается найти символ», либо исправить ее напрямую при написании кода в соответствии с подсказками IDE, либо следить за выводом журнала стека после запуска.

В журнале будет указан конкретный номер строки и тип ошибки. В соответствии с подсказкой подумайте о том, что ваш код хочет выразить, а затем предпримите конкретные действия, чтобы это исправить. Например, приведенный выше рисунок напоминает нам, что 35 строк кода неверны, а переменная j не может быть найдена, то это означает, что нам нужно дать переменной j объявление типа.

04. Более сложные причины

В реальных проектах причины ошибки «не удается найти символ» часто бывают комплексными, но в большинстве случаев ее можно отнести к следующим моментам:

  • Неверный формат кодировки. Например, это должно быть UTF-8, но для некоторых устаревших элементов будут установлены значения GBK, GB2312 и т. д.

  • Версии JDK не совпадают. Например, у некоторых членов команды на компьютерах установлена ​​JDK 1.6, а у других — JDK 8. Некоторые новые синтаксисы после обновления версии, естественно, будут конфликтовать со старой версией.

  • Обновления сторонних библиотек классов. Некоторые общие библиотеки классов с открытым исходным кодом часто несовместимы со старыми версиями.Например, последняя версия пакета классов StringUtilsorg.apache.commons.lang3, но преждеorg.apache.commons.lang.

  • Имя класса и имя метода одинаковы, но имя пакета другое, и параметры метода разные, при использовании легко вызвать «не удается найти символ».

Когда я впервые изучал Java, учитель попросил нас написать код в Блокноте, а затем скомпилировать и запустить код из командной строки, что было настоящей головной болью.

Часто возникает ошибка «не удается найти символ», и я почти сдался. Потому что на этапе новичка, как я могу запомнить столько правил языка программирования, я часто что-то забываю, а в блокноте нет номера строки, найти проблемы почти смертельно.

После таких мучений я настоятельно рекомендую новичкам прекратить использовать Блокнот для программирования (не притворяйтесь) и перейти непосредственно к IDE.Если есть какие-либо проблемы, инструменты помогут вам справиться с этим.

05. Спасибо

Что ж, мои дорогие читатели, на этом все. Нет никаких сомнений в том, что вы лучший искатель, на мой взгляд, чтобы увидеть вас здесь, и я должен поставить вам большой палец вверх 👍. Если хотите увидеть больше, рекомендую еще 2 статьи, надеюсь, вам понравится.

Как быстро заложить хороший фундамент для Java?
Как изящно распечатать объект Java?

Напоследок у меня небольшая просьба.Быть оригинальным не просто.Если считаешь это полезным,то прошу не скупиться на руки.подобносила — потому что это будет самой сильной мотивацией для моего письма.