Имена переменных Java Unicode - PullRequest
       28

Имена переменных Java Unicode

14 голосов
/ 14 сентября 2009

Я попал в интересную дискуссию на форуме, где мы обсуждали именование переменных.

Помимо соглашений, я заметил, что для переменной допустимо иметь имя символа Unicode, например, допустимо следующее:

int \u1234;

Однако, если я, например, дал ему имя #, это выдаст ошибку. Согласно учебному пособию Sun оно действительно, если "начинается с буквы, знака доллара" $ "или символа подчеркивания" _ "."

Но уникод 1234 - это некий эфиопский персонаж. Так что же на самом деле определяется как «буква»?

Ответы [ 2 ]

20 голосов
/ 14 сентября 2009

Стандарт Unicode определяет, что считать буквой.

Из Спецификации языка Java, раздел 3.8 :

Буквы и цифры могут быть взяты из весь набор символов Unicode, который поддерживает большинство сценариев написания в использовать в современном мире, в том числе большие наборы для китайского, японского и Корейский язык. Это позволяет программистам использовать идентификаторы в своих программах, которые написано на их родных языках.

A «Буква Java» - это символ, для которого метод Character.isJavaIdentifierStart (целое) возвращает истину. «Буква или цифра Java» это персонаж, для которого метод Character.isJavaIdentifierPart (целое) возвращает true.

Из документации Character для isJavaIdentifierPart:

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

  • это буква
  • это символ валюты (например, '$')
  • это соединительный знак пунктуации (например, '_')
  • это цифра
  • это цифровая буква (например, символ римской цифры)
  • это комбинационная марка
  • это знак без пробелов
  • isIdentifierIgnorable (codePoint) возвращает true для символа
4 голосов
/ 14 сентября 2009

Символы Юникода делятся на классы символов. Есть набор символов Unicode, которые попадают в класс «буква».

Определяется Character.isLetter(c) для Java. Но для идентификаторов Character.isJavaIdentifierStart(c) и Character.isJavaIdentifierPart(c) более актуальны.

Относительно соответствующей спецификации Unicode см. this .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...