it-swarm.it

Caratteri validi in un nome di classe Java

Quali caratteri sono validi in un nome di classe Java? Quali altre regole governano i nomi delle classi Java (ad esempio, i nomi delle classi Java non possono iniziare con un numero)?

64
Zach

Puoi avere quasi tutti i personaggi, inclusi molti caratteri Unicode! La definizione esatta è in la specifica della lingua Java nella sezione 3.8: Identificatori .

Un identificatore è una sequenza di lunghezza illimitata di lettere Java e cifre Java, la prima delle quali deve essere una lettera Java. ...

Lettere e cifre possono essere ricavate dall'intero set di caratteri Unicode, ... Ciò consente ai programmatori di utilizzare identificativi nei loro programmi scritti nelle loro lingue native.

Un identificatore non può avere la stessa ortografia (sequenza di caratteri Unicode) come parola chiave (§3.9), valore letterale booleano (§3.10.3) o valore letterale nulla (§3.10.7), oppure si verifica un errore di compilazione.

Tuttavia, vedi questa domanda per sapere se dovresti farlo o no.

54
Jason Cohen

Ogni linguaggio di programmazione ha un proprio insieme di regole e convenzioni per i tipi di nomi che è possibile utilizzare e il linguaggio di programmazione Java non è diverso. Le regole e le convenzioni per nominare le variabili possono essere riassunte come segue:

  • I nomi delle variabili fanno distinzione tra maiuscole e minuscole. Il nome di una variabile può essere qualsiasi identificatore legale: una sequenza di lunghezza illimitata di lettere e cifre Unicode, che inizia con una lettera, il simbolo del dollaro "$" o il carattere di sottolineatura "_". La convenzione, tuttavia, è di iniziare sempre i nomi delle variabili con una lettera, non "$" o "_". Inoltre, il carattere del simbolo del dollaro, per convenzione, non viene mai utilizzato. Potresti trovare alcune situazioni in cui i nomi generati automaticamente conterranno il simbolo del dollaro, ma i nomi delle variabili dovrebbero sempre evitare di usarlo. Esiste una convenzione simile per il carattere di sottolineatura; mentre è tecnicamente legale iniziare il nome della variabile con "_", questa pratica è scoraggiata. Lo spazio bianco non è permesso.

  • I caratteri successivi possono essere lettere, cifre, simboli del dollaro o caratteri di sottolineatura. Le convenzioni (e il buon senso) si applicano anche a questa regola. Quando scegli un nome per le tue variabili, usa le parole complete invece delle abbreviazioni criptiche. Fare così renderà il tuo codice più facile da leggere e capire. In molti casi renderà anche il tuo codice auto-documentante; i campi denominati cadenza, velocità e marcia, ad esempio, sono molto più intuitivi delle versioni abbreviate, come s, c e g. Inoltre, tieni presente che il nome che scegli non deve essere una parola chiave o una parola riservata.

  • Se il nome che scegli è composto da una sola parola, scrivi quella parola in tutte le lettere minuscole. Se consiste di più di una parola, usa la maiuscola per la prima lettera di ogni parola successiva. I nomi gearRatio e currentGear sono i primi esempi di questa convenzione. Se la variabile memorizza un valore costante, come static final int NUM_GEARS = 6, la convenzione cambia leggermente, capitalizzando ogni lettera e separando le parole successive con il carattere di sottolineatura. Per convenzione, il carattere di sottolineatura non viene mai usato altrove. 

Da il tutorial Java ufficiale .

16
Ivan Bosnic

Oltre alle precedenti risposte vale la pena notare che:

  1. Java consente qualsiasi simbolo di valuta Unicode nei nomi dei simboli, quindi tutto ciò che segue funzionerà:

$ Var1 £ var2 € VAR3

Credo che l'uso dei simboli di valuta abbia origine in C/C++, dove le variabili aggiunte al tuo codice dal compilatore iniziarono convenzionalmente con '$'. Un ovvio esempio in Java è il nome dei file '.class' per le classi interne, che per convenzione hanno il formato 'Outer $ Inner.class'

  1. Molti programmatori C # e C++ adottano la convenzione di collocare "I" davanti alle interfacce (ovvero le classi virtuali pure in C++). Questo non è richiesto, e quindi non fatto, in Java perché la parola chiave implements rende molto chiaro quando qualcosa è un'interfaccia.

Confrontare:

classe Impiegato: pubblico IPayable // C++

con

impiegato di classe: IPayable // C #

classe Impiegato implementa Pagabile // Java

  1. Molti progetti usano la convenzione di mettere un trattino di sottolineatura davanti ai nomi dei campi, in modo che possano essere facilmente distinti dalle variabili locali e dai parametri, ad es.

doppio _salario privato;

Una piccola minoranza posiziona il trattino basso dopo il nome del campo, ad es.

doppio salario privato;

9
Garth Gilmour

Come già affermato da Jason Cohen, la specifica del linguaggio Java definisce cosa un identificatore legale è nella sezione 3.8:

"Un identificatore è una sequenza a lunghezza illimitata di lettere Java e cifre Java, il primo di cui deve essere una lettera Java. [...] Una 'lettera Java' è un carattere per il quale il metodo Character.isJavaIdentifierStart ( int) restituisce true. Un 'Java letter-or-digit' è un carattere per il quale il metodo Character.isJavaIdentifierPart (int) restituisce true. "

Speriamo che questo risponda alla tua seconda domanda. Per quanto riguarda la tua prima domanda; Mi è stato insegnato sia dagli insegnanti che (per quanto posso ricordare) i compilatori Java che un nome di classe Java dovrebbe essere un identificatore che inizia con una lettera maiuscola A-Z, ma su questa non riesco a trovare alcuna fonte affidabile. Quando si prova con OpenJDK non ci sono avvisi quando si iniziano i nomi delle classi con lettere minuscole o addirittura un segno $. Quando si usa $ -sign, si deve sfuggire se si compila da una shell bash, comunque.

4
EriF89

Vorrei aggiungere alla risposta di bosnic che qualsiasi carattere di valuta valido è legale per un identificatore in Java. il € è un identificatore legale, così come € e anche €. Tuttavia, non riesco a capire come modificare la sua risposta, quindi sono costretto a postare questa aggiunta banale.

2
MetroidFan2002

Quali altre regole governano i nomi delle classi Java (ad esempio, i nomi delle classi Java non possono iniziare con un numero)?

  • I nomi delle classi Java di solito iniziano con una lettera maiuscola.
  • I nomi delle classi Java non possono iniziare con un numero.
  • se ci sono più parole nel nome della classe come "MyClassName" ogni Word dovrebbe iniziare con una lettera maiuscola. es .- "MyClassName". Questa convenzione di denominazione è basata su CamelCase Type.
1
Deepak Kumar

I nomi delle classi dovrebbero essere nomi in UpperCamelCase, con la prima lettera di ogni parola in maiuscolo. Usa parole intere - evita acronimi e abbreviazioni (a meno che l'abbreviazione sia molto più diffusa della forma lunga, come URL o HTML). Le convenzioni di denominazione possono essere lette qui:

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

0
Sachin Tiwari

Gli identificatori vengono utilizzati per nomi di classi, nomi di metodi e nomi di variabili. Un identificativo può essere una qualsiasi sequenza descrittiva di lettere maiuscole e minuscole, numeri o caratteri di segno di dollaro e segno di dollaro. Non devono iniziare con un numero, per non essere confusi con un valore letterale numerico. Ancora una volta, Java fa distinzione tra maiuscole e minuscole, quindi VALUE è un identificatore diverso rispetto a Value . Alcuni esempi di identificatori validi sono:

AvgTemp, conteggio a4, $ test, this_is_ok

I nomi delle variabili non validi includono:

2 conti, alta temperatura, non/ok

0
navneet kumar