допустимые символы в имени класса java

<p>какие символы допустимы в имени класса java? какие другие правила управляют java именами классов (например, java имена классов не могут начинаться с цифры)?</p>

<p>вы можете иметь практически любого персонажа, включая большинство символов юникода! точное определение содержится в <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.8">спецификация языка java в разделе 3.8: идентификаторы</a> .</p><blockquote> <p><em>identifier</em> - это неограниченная последовательность символов <em>java-букв</em> и <em>java-цифр</em>, первая из которых должна быть <em>java-буквой</em>. ...</p> <p>буквы и цифры могут быть взяты из всего набора символов unicode, ... это позволяет программистам использовать идентификаторы в своих программах, которые написаны на их родных языках.</p> <p>идентификатор не может иметь такое же правописание (последовательность символов unicode), что и ключевое слово (§3.9), логический литерал (§3.10.3) или нулевой литерал (§3.10.7), иначе возникает ошибка времени компиляции.</p> </blockquote><p>однако, смотрите <a href="https://stackoverflow.com/questions/61615/should-you-use-international-identifiers-in-javac">этот вопрос</a> , чтобы узнать, стоит ли вам это делать.</p>

<blockquote> <p>каждый язык программирования имеет свой собственный набор правил и соглашений для типов имен, которые вы можете использовать, и язык программирования java ничем не отличается. правила и соглашения для именования ваших переменных можно обобщить следующим образом:</p> <ul> <li><p>имена переменных чувствительны к регистру. имя переменной может быть любым допустимым идентификатором - последовательность символов unicode неограниченной длины, начинающаяся с буквы, знака доллара "$" или символа подчеркивания "_". однако соглашение всегда должно начинать имена переменных с буквы, а не «$» или «\_». кроме того, знак доллара, по соглашению, никогда не используется вообще. вы можете столкнуться с некоторыми ситуациями, когда автоматически генерируемые имена будут содержать знак доллара, но имена переменных всегда должны избегать его использования. аналогичное соглашение существует для символа подчеркивания; хотя технически законно начинать имя вашей переменной с "\_", такая практика не рекомендуется. пробелы не допускаются.</p></li> <li><p>последующими символами могут быть буквы, цифры, знаки доллара или символы подчеркивания. условные обозначения (и здравый смысл) применимы и к этому правилу. при выборе имени для ваших переменных используйте полные слова вместо загадочных сокращений. это облегчит чтение и понимание вашего кода. во многих случаях это также сделает ваш код самодокументированным; например, поля с именами cadence, speed и gear гораздо более интуитивно понятны, чем сокращенные версии, такие как s, c и g. также имейте в виду, что выбранное вами имя не должно быть ключевым словом или зарезервированным word.</p></li> <li><p>если выбранное вами имя состоит только из одного слова, пишите это слово прописными буквами. если оно состоит из более чем одного слова, используйте заглавные буквы первой буквы каждого последующего слова. названия gearratio и currentgear являются яркими примерами этого соглашения. если ваша переменная хранит постоянное значение, такое как <code>static final int num\_gears = 6</code>, соглашение меняется незначительно, с прописной буквой и разделением последующих слов символом подчеркивания. по соглашению символ подчеркивания никогда не используется в другом месте. </p></li> </ul> </blockquote><p>из <a href="https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html">официальный учебник java</a> .</p>

<p>в дополнение к предыдущим ответам стоит отметить, что:</p><ol> <li>java допускает любой символ валюты unicode в именах символов, поэтому будет работать следующее:</li> </ol><blockquote> <p>$ var1 £ var2 € var3 </blockquote>я считаю, что использование символов валюты берет свое начало в c/c++, где переменные, добавляемые в ваш код компилятором, обычно начинаются с '$'. очевидным примером в java являются имена файлов «.class» для внутренних классов, которые по соглашению имеют формат «outer $ inner.class».<ol start="2"> многие программисты на c # и c++ придерживаются соглашения о размещении «i» перед интерфейсами (или чисто виртуальных классов в c++). это не требуется и, следовательно, не выполняется в java, потому что ключевое слово implements дает понять, когда что-то является интерфейсом. для сравнения:<blockquote> класс employee: общедоступный ipayable // c++ </blockquote>с<blockquote> класс employee: ipayable // c # </blockquote>а также <blockquote> класс employee реализует payable // java </blockquote><ol start="3"> многие проекты используют соглашение о размещении подчеркивания перед именами полей, чтобы их можно было легко отличить от локальных переменных и параметров, например. <blockquote> частный двойной _salary; </blockquote>крошечное меньшинство ставит подчеркивание после имени поля, например.<blockquote> частная двойная зарплата_; </blockquote>

как уже было сказано джейсоном коэном, спецификация языка java определяет юридический идентификатор в разделе 3.8:«идентификатор представляет собой последовательность букв java и цифр java неограниченной длины, первая из которых должна быть [...] буква java - это символ, для которого метод character.isjavaidentifierstart ( int) возвращает true. «буква или цифра java» - это символ, для которого метод character.isjavaidentifierpart (int) возвращает true. "это, надеюсь, ответит на ваш второй вопрос. относительно вашего первого вопроса; преподаватели и (насколько я помню) преподаватели java учили меня, что имя класса java должно быть идентификатором, начинающимся с заглавной буквы a-z, но я не могу найти надежного источника по этому вопросу. при тестировании с openjdk нет никаких предупреждений, когда имена классов начинаются строчными буквами или даже знаком $. однако, используя $ -sign, вы должны избегать его, если компилируете из командной оболочки bash.

я хотел бы добавить к ответу босника, что любой допустимый символ валюты является допустимым для идентификатора в java. € € является юридическим идентификатором, так же как € this, и € также. однако я не могу понять, как редактировать его или ее ответ, поэтому я вынужден опубликовать это тривиальное дополнение.

<blockquote> какие другие правила управляют именами классов java (например, имена классов java не могут начинаться с цифры)? </blockquote> имена классов java обычно начинаются с заглавной буквы. имена классов java не могут начинаться с цифры. если в имени класса несколько слов, например «myclassname», каждое слово должно начинаться с заглавной буквы. например, «myclassname». это соглашение об именах основано на<strong> camelcase </strong>type. 

имена классов должны быть существительными в uppercamelcase, причем первая буква каждого слова должна быть заглавной. используйте целые слова - избегайте сокращений и аббревиатур (если только аббревиатура не используется более широко, чем длинная форма, такая как url или html) .... соглашения об именах можно прочитать здесь: <a href="http://www.oracle.com/technetwork/java/codeconventions-135099.html">http://www.oracle.com/technetwork/java/codeconventions-135099.html 

идентификаторы используются для имен классов, имен методов и имен переменных. идентификатором может быть любая описательная последовательность прописных и строчных букв, цифр или знаков подчеркивания и знака доллара. они не должны начинаться с цифры, чтобы не быть перепутанными с числовым литералом. опять же, java чувствительна к регистру, поэтому value является отличительным признаком, чем value . некоторые примеры допустимых идентификаторов:avgtemp, count a4, $ test, this\_is\_ok</p><p>неверные имена переменных включают в себя:</p><p>2count, высокотемпературный, не/нормально</p>