Pergunta

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

Foi útil?

Solução

Você pode ter praticamente qualquer caractere, incluindo a maioria dos caracteres Unicode!A definição exata está em a especificação da linguagem Java na seção 3.8:Identificadores.

Um identificador é uma sequência de comprimento ilimitado de Letras Java e Dígitos Java, o primeiro dos quais deve ser um Carta 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 escritos em suas línguas nativas.

Um identificador não pode ter a mesma grafia (sequência de caracteres Unicode) de uma palavra-chave (§3.9), literal booleano (§3.10.3) ou literal nulo (§3.10.7), ou ocorrerá um erro em tempo de compilação.

Contudo, veja essa questão para saber se você deve ou não fazer isso.

Outras dicas

Cada 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 das variáveis ​​diferenciam maiúsculas de minúsculas.O nome de uma variável pode ser qualquer identificador legal - uma sequência de comprimento ilimitado de letras e dígitos Unicode, começando com uma letra, o cifrão "$" ou o caractere sublinhado "_".A convenção, entretanto, é sempre começar os nomes das variáveis ​​com uma letra, não com "$" ou "_".Além disso, o cifrão, por convenção, nunca é usado.Você pode encontrar algumas situações em que nomes gerados automaticamente conterão o cifrão, mas seus nomes de variáveis ​​devem sempre evitar usá-lo.Existe uma convenção semelhante para o caractere sublinhado;embora seja tecnicamente legal começar o nome da sua variável com "_", esta prática é desencorajada.Espaço em branco não é permitido.

  • Os caracteres subsequentes podem ser letras, dígitos, cifrões ou caracteres de sublinhado.As convenções (e o bom senso) também se aplicam a esta 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, isso também tornará seu código autodocumentado;campos denominados cadência, velocidade e engrenagem, por exemplo, são muito mais intuitivos do que versões abreviadas, como s, c e g.Lembre-se também de que o nome escolhido não deve ser uma palavra-chave ou palavra reservada.

  • Se o nome que você escolher consistir em apenas uma palavra, soletre essa palavra com todas as letras minúsculas.Se consistir em mais de uma palavra, coloque a primeira letra de cada palavra subsequente em maiúscula.Os nomes gearRatio e currentGear são excelentes exemplos desta convenção.Se sua variável armazena um valor constante, como static final int NUM_GEARS = 6, a convenção muda ligeiramente, colocando todas as letras em maiúscula e separando as palavras subsequentes com o caractere de sublinhado.Por convenção, o caractere sublinhado nunca é usado em outro lugar.

De o tutorial oficial de Java.

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

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

$ var1 £ var2 € var3

Acredito que o uso de símbolos monetários se origina em C/C++, onde as variáveis ​​adicionadas ao seu código pelo compilador começam convencionalmente 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 de 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 deixa bem claro quando algo é uma interface.

Comparar:

classe Funcionário:público IPayable //C++

com

classe Funcionário:IPagável //C#

e

classe Funcionário implementa Pagável //Java

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

salário duplo privado;

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

salário duplo privado_;

Conforme já afirmado por Jason Cohen, a Especificação da Linguagem Java define o que é um identificador legal na seção 3.8:

"Um identificador é uma sequência ilimitada de letras java e dígitos Java, o primeiro dos quais deve ser uma letra Java.[...] Uma 'letra Java' é um caractere para o qual o método Character.isJavaIdentifierStart(int) retorna verdadeiro.Uma 'letra ou dígito Java' é um caractere para o qual o método Character.isJavaIdentifierPart(int) retorna verdadeiro."

Esperamos que isso responda à sua segunda pergunta.Em relação à sua primeira pergunta;Fui ensinado por professores e (até onde me lembro) por compiladores Java que um nome de classe Java deve ser um identificador que começa com uma letra maiúscula de A a Z, mas não consigo encontrar nenhuma fonte confiável sobre isso.Ao experimentar o OpenJDK, não há avisos ao iniciar nomes de classes com letras minúsculas ou mesmo com um sinal $.Ao usar um sinal $, você precisa escapar dele se compilar a partir de um shell bash.

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 €this e € também.No entanto, não consigo descobrir como editar a resposta dele, por isso sou forçado a postar esta adição trivial.

Que outras regras regem os nomes das classes Java (por exemplo, os nomes das classes Java não podem começar com um número)?

  • Os nomes das classes Java geralmente começam com uma letra maiúscula.
  • Os nomes das classes Java não podem começar com um número.
  • se houver várias palavras no nome da classe, como "MyClassName", cada palavra deverá começar com uma letra maiúscula.por exemplo, "MyClassName".Esta convenção de nomenclatura é baseada em CamelCase Tipo.

Os nomes das classes devem ser substantivos em UpperCamelCase, com a primeira letra de cada palavra em maiúscula.Use palavras inteiras – evite siglas e abreviações (a menos que a abreviatura seja muito mais usada do que o formato longo, como URL ou HTML).As convenções de nomenclatura podem ser lidas aqui:

http://www.oracle.com/technetwork/java/codeconventions-135099.html

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 caracteres de sublinhado e cifrão.Eles não devem começar com um número, para não serem confundidos com um literal numérico.Novamente, Java diferencia maiúsculas de minúsculas, então VALUE é um identificador diferente de Value.Alguns exemplos de identificadores válidos são:

AvgTemp, contagem a4, $ teste, isto_está_ok

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

2 contagens, alta temperatura, não/ok

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top