Ответ 1
Стандарт Unicode определяет, что считается буквой.
Из Спецификация языка Java, раздел 3.8:
Буквы и цифры могут быть взяты из весь набор символов Юникода, который поддерживает большинство сценариев написания использования в современном мире, включая большие наборы для китайского, японского и Корейский. Это позволяет программистам использовать идентификаторы в своих программах, которые написанных на их родных языках.
а "Java letter" - символ, для которого метод Character.isJavaIdentifierStart(целое) возвращает true. "Буква или цифра Java" является символом, для которого метод Character.isJavaIdentifierPart(целое) возвращает true.
Из документа Character
для isJavaIdentifierPart
:
Определяет, может ли символ (кодовая точка Юникода) быть частью идентификатора Java, как другой чем первый символ. Символ может быть частью идентификатора Java, если выполняется одно из следующих условий:
- это письмо
- это символ валюты (например, $$)
- это связующий символ пунктуации (например, "_" )
- это цифра
- это числовая буква (например, римский цифровой символ)
- это комбинирующий знак
- это знак без пробела
- isIdentifierIgnorable (codePoint) возвращает true для символа