it-swarm-pt.tech

Caracteres válidos em um nome de classe Java

Quais caracteres são válidos em um nome de classe Java? Quais outras regras governam nomes de classes Java (por exemplo, nomes de classes Java não podem começar com um número)?

64
Zach

Você pode ter quase qualquer caractere, incluindo a maioria dos caracteres Unicode! A definição exata está em a Especificação da Linguagem Java sob a seção 3.8: Identificadores .

Um identificador é uma seqüência de comprimento ilimitado de letras Java e dígitos Java, o primeiro dos quais deve ser uma letra Java. ...

Letras e dígitos podem ser extraídos de todo o conjunto de caracteres Unicode, ... Isso permite que os programadores usem identificadores em seus programas que são escritos em seus idiomas nativos.

Um identificador não pode ter a mesma ortografia (seqüência de caracteres Unicode) como uma palavra-chave (§3.9), literal booleano (§3.10.3) ou o literal nulo (§3.10.7), ou ocorre um erro de tempo de compilação.

No entanto, veja esta questão para saber se você deve ou não fazer isso.

54
Jason Cohen

Toda linguagem de programação tem seu próprio conjunto de regras e convenções para os tipos de nomes que você pode usar, e a linguagem de programação Java não é diferente. As regras e convenções para nomear suas variáveis ​​podem ser resumidas da seguinte forma:

  • Os nomes de variáveis ​​são sensíveis a maiúsculas e minúsculas. O nome de uma variável pode ser qualquer identificador legal - uma seqüência de comprimento ilimitado de letras e dígitos Unicode, começando com uma letra, o sinal de cifrão "$" ou o caractere de sublinhado "_". A convenção, no entanto, é sempre começar seus nomes de variáveis ​​com uma letra, não "$" ou "_". Além disso, o caractere de cifrão, por convenção, nunca é usado. Você pode encontrar algumas situações em que os nomes gerados automaticamente conterão o cifrão, mas os nomes das variáveis ​​devem sempre evitar usá-lo. Uma convenção semelhante existe para o caractere de sublinhado; Embora seja tecnicamente legal começar o nome da sua variável com "_", essa prática é desencorajada. Espaço em branco não é permitido.

  • Caracteres subseqüentes podem ser letras, dígitos, cifrões ou caracteres de sublinhado. Convenções (e bom senso) também se aplicam a essa regra. Ao escolher um nome para suas variáveis, use palavras completas em vez de abreviações enigmáticas. Isso tornará seu código mais fácil de ler e entender. Em muitos casos, ele também fará seu código se documentar automaticamente; campos nomeados cadência, velocidade e engrenagem, por exemplo, são muito mais intuitivos do que versões abreviadas, como s, c e g. Também tenha em mente que o nome escolhido não deve ser uma palavra-chave ou uma palavra reservada.

  • Se o nome escolhido consiste em apenas um Word, soletre o Word em todas as letras minúsculas. Se consistir em mais de um Word, coloque em maiúscula a primeira letra de cada palavra subsequente. Os nomes gearRatio e currentGear são exemplos principais dessa convenção. Se sua variável armazena um valor constante, como static final int NUM_GEARS = 6, a convenção muda ligeiramente, capitalizando cada letra e separando as palavras subseqüentes com o caractere de sublinhado. Por convenção, o caractere de sublinhado nunca é usado em outro lugar. 

De o Java Tutorial oficial .

16
Ivan Bosnic

Além das respostas anteriores, vale a pena notar que:

  1. Java permite qualquer símbolo de moeda Unicode em nomes de símbolos, portanto, o seguinte irá funcionar:

$ var1 £ var2 € var3

Eu acredito que o uso de símbolos de moeda tem origem em C/C++, onde as variáveis ​​adicionadas ao seu código pelo compilador convencionalmente começaram com '$'. Um exemplo óbvio em Java são os nomes dos arquivos '.class' para classes internas, que por convenção têm o formato 'Outer $ Inner.class'

  1. Muitos programadores C # e C++ adotam a convenção de colocar 'I' na frente de interfaces (também conhecidas como classes virtuais puras em C++). Isso não é necessário e, portanto, não é feito em Java, porque a palavra-chave implements torna muito claro quando algo é uma interface.

Comparar:

classe Funcionário: public IPayable // C++

com

classe Funcionário: IPayable // C #

classe Employee implementa Payable // Java

  1. Muitos projetos usam a convenção de colocar um sublinhado na frente dos nomes de campo, para que eles possam ser prontamente distinguidos das variáveis ​​e parâmetros locais, e.

private _salary duplo;

Uma pequena minoria coloca o sublinhado após o nome do campo, e.

salário duplo privado_;

9
Garth Gilmour

Como já foi dito por Jason Cohen, a especificação da linguagem Java define o que é um identificador legal na seção 3.8:

"Um identificador é uma seqüência de comprimento ilimitado de letras Java e dígitos Java, o Primeiro deve ser uma letra Java. [...]" Letra Java "é um caractere para o qual o método Caractere. isJavaIdentifierStart (int) retorna true. Um 'Java letra-ou-dígito' é um caractere para o qual o método Character.isJavaIdentifierPart (int) retorna verdadeiro. "

Isso, esperançosamente, responde à sua segunda pergunta. Quanto à sua primeira pergunta; Fui ensinado pelos professores e (tanto quanto me lembro) compiladores Java que um nome de classe Java deve ser um identificador que começa com uma letra maiúscula A-Z, mas não consigo encontrar nenhuma fonte confiável sobre isso. Ao experimentá-lo com o OpenJDK, não há avisos quando se inicia nomes de classes com letras minúsculas ou até mesmo um sinal de $. Ao usar um $ -sign, você tem que escapar dele se você compilar de um shell bash, no entanto.

4
EriF89

Gostaria de acrescentar à resposta de Bosnic que qualquer caractere de moeda válido é legal para um identificador em Java. Este é um identificador legal, assim como este e também. No entanto, não consigo descobrir como editar sua resposta, então sou forçado a postar essa adição trivial.

2
MetroidFan2002

Quais outras regras governam nomes de classes Java (por exemplo, nomes de classes Java não podem começar com um número)?

  • Os nomes de classes Java geralmente começam com uma letra maiúscula.
  • Nomes de classes Java não podem começar com um número.
  • se houver várias palavras no nome da classe, como "MyClassName", cada palavra deve começar com uma letra maiúscula. eg- "MyClassName" .Esta convenção de nomenclatura é baseada em CamelCase Type.
1
Deepak Kumar

Nomes de classes devem ser substantivos em UpperCamelCase, com a primeira letra de cada Word em maiúscula. Use palavras inteiras - evite siglas e abreviações (a menos que a abreviação seja muito mais usada do que a forma longa, como URL ou HTML). As convenções de nomenclatura podem ser lidas aqui:

http://www.Oracle.com/technetwork/Java/codeconventions-135099.html

0
Sachin Tiwari

Identificadores são usados ​​para nomes de classes, nomes de métodos e nomes de variáveis. Um identificador pode ser qualquer sequência descritiva de letras maiúsculas e minúsculas, números ou os caracteres de underscore e cifrão. Eles não devem começar com um número, para que não se confundam com um literal numérico. Novamente, Java faz distinção entre maiúsculas e minúsculas, portanto, VALUE é um identificador diferente de Value. Alguns exemplos de identificadores válidos são:

AvgTemp, conte a4, $ test, this_is_ok

Nomes de variáveis ​​inválidos incluem:

2count, alta temperatura, Not/ok

0
navneet kumar