Различия между идентификаторами Java и идентификаторами Unicode?

В API символов Java 19 я увидел 2 метода:

  • isJavaIdentifierStart
  • isUnicodeIdentifierStart

Первый применяется к идентификаторам Java, а второй — к идентификаторам Unicode.

Однако я не понимаю различий между двумя типами идентификаторов.

Кто-нибудь может объяснить? И пример пожалуйста.

Спасибо за всех.

привет @Sweeper, конечно, я прочитал это. Но я не понимаю различий между ними; и мне нужен пример, чтобы ясно понять.

locobe 04.02.2023 15:29

Какой пример вы хотите? Например, как $ не является началом идентификатора Unicode, а является началом идентификатора Java?

Sweeper 04.02.2023 15:36

Я просто хочу знать, в каком случае (контексте) мы используем идентификатор Java? Юникод идентификатор?

locobe 04.02.2023 15:37

Например, переменная является случаем идентификатора Java. А когда и где мы используем идентификатор Unicode?

locobe 04.02.2023 15:38

Вы читали документ, на который ссылается JavaDoc? Прочтите краткий раздел — «Идентификатор Unicode» — это просто «рекомендуемый вариант по умолчанию» для «идентификатора общего назначения».

Sweeper 04.02.2023 15:48
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
5
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Идентификатор Java — это последовательность символов, которая будет распознана компилятором Java как символ идентификатора. Это указано в Спецификации языка Java; см. JLS 3.8

Идентификатор Unicode — это совсем другое. Идентификаторы Unicode указаны в документе Unicode UAX #31 — Unicode Identifier and Pattern Syntax. Говорится:

Распространенной задачей, стоящей перед реализатором стандарта Unicode, является предоставление механизма синтаксического анализа и/или лексического анализа идентификаторов, таких как переменные языка программирования или доменные имена. Существуют также области, в которых идентификаторы необходимо определять с помощью расширенного набора символов, чтобы лучше соответствовать ожиданиям конечных пользователей, например, в хэштегах.

Чтобы помочь в стандартной обработке идентификаторов в синтаксических анализаторах на основе символов Unicode и лексических анализаторах, здесь предоставляется набор спецификаций в качестве основы для анализа идентификаторов, содержащих символы Unicode. Эти спецификации включают в себя:

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

Другими словами, это общий синтаксис для идентификаторов, определенных Unicode для использования в различных стандартах Unicode и продуктах данных, а также в программном обеспечении, которое "потребляет" эти продукты... в некотором смысле. Они также могут быть приняты другими языками программирования.

Java НЕ приняла идентификаторы Unicode. Однако идентификаторы Unicode используются в некоторых библиотеках Java SE; например в регулярных выражениях Java, определенных классом Pattern. (Примеры см. в разделе «Поддержка Unicode» javadoc.)


Я просто хочу знать, в каком случае (контексте) мы используем идентификатор Java? Юникод идентификатор?

Очевидно, вы используете идентификатор Java в исходном коде Java, и вы используете идентификатор Unicode, когда вам нужно сослаться на скрипт Unicode, блок, категорию... или что-то подобное.

Точно так же вы используете эти методы при написании кода для разбора или проверки (соответственно) идентификаторов Java или Unicode... для какой-то цели. Я оставлю вам подумать о практических вариантах использования1.


1 - If you can't think of any, it doesn't matter. I can't think of practical use-cases for unicycles2 ... that's no reason for them to not exist either as a concept or in reality.
2 - I don't count pizza delivery by unicycle as practical.

Другие вопросы по теме