Ho letto da qualche parte che Java fa distinzione tra maiuscole e minuscole. Non sono stato in grado di confermarlo È? Se è così, perché?Java è sensibile al maiuscolo/minuscolo?
risposta
Sì, è case-sensitive. È così grazie alla sua eredità di C. Per mantenere il linguaggio più familiare a ciò che le persone erano abituate a "nel giorno", lo lasciarono come maiuscole e minuscole. C'è un ulteriore vantaggio, dal momento che gli identificatori Java possono essere quasi tutti i caratteri Unicode. Non devi preoccuparti se un personaggio individuale può essere o meno sovvertito.
Ad esempio, ß
deve essere equivalente a ss
?
Gli identificatori fanno distinzione tra maiuscole e minuscole perché la fascicolazione è un problema difficile, dipendente dalla locale.
Le regole di confronto Unicode definiscono un preordine, il che significa che * anche * definisce il confronto senza distinzione tra maiuscole e minuscole. – Tobu
Sono corretto; scusa. Non posso più cambiare voto, anche se Joel e Jeff hanno deciso che sarebbe stata una buona idea che le discussioni non influenzassero mai la propria opinione. – Joey
Grazie, preferirei ignorare il rinforzo positivo. – Tobu
Sì. Java è case-sensitive perché la maggior parte dei linguaggi di programmazione sono!
Direi che è una spiegazione piuttosto scarsa. – MightyPork
Java fa distinzione tra maiuscole e minuscole perché utilizza una sintassi in stile C. La distinzione tra maiuscole e minuscole è utile perché consente di dedurre cosa significa un nome in base al suo caso.
Ad esempio, lo standard Java per i nomi di classe è in maiuscolo la prima lettera di ogni parola (Integer
, PrintStream
, ecc.). Lo standard per i nomi di variabili e metodi è in minuscolo la prima lettera della prima parola e in maiuscolo tutte le altre prime lettere (number
, , checkError()
, ecc.). E lo standard per le costanti è tutto maiuscolo con caratteri di sottolineatura (SOME_CONSTANT
).
Mentre non è necessario seguire queste regole nel codice (verrà compilato anche se si infrangono queste regole), il codice incorporato di Java le segue e tutte le principali librerie Java lo fanno anche. E il tuo codice dovrebbe davvero seguire anche queste regole, perché aiuta gli altri sviluppatori a dedurre il significato quando vedono la maiuscola.
Questa era più una decisione tecnica. Java è inteso per essere indipendente dalla piattaforma. Le classi pubbliche di Java sono archiviate con il pacchetto/classname nel filesystem. Nelle piattaforme non Windows i nomi file sono case sensitive. Avrebbe fallito laggiù se non avessi usato un caso esatto per caricare/eseguire la classe. Questa esigenza di distinzione tra maiuscole e minuscole viene estesa ad altri identificatori in Java (che alla fine offre spazio per altri (ma non tecnici) vantaggi come le convenzioni di denominazione).
Il compilatore Java e l'interprete fanno distinzione tra maiuscole e minuscole, pertanto è necessario capitalizzare in modo coerente.
HelloWorldApp non è la stessa di Helloworldapp.
Questa distinzione tra maiuscole e minuscole riflette l'eredità di Java come una conseguenza di C e C++.
Ho letto da qualche parte che Java fa distinzione tra maiuscole e minuscole. Non sono stato in grado di confermarlo
codice sorgente Java è case sensitive, se si intende che. Ad esempio Double
non è lo stesso tipo di double
e si possono avere due variabili diverse e separate myData
e mydata
.
E 'vero? Se è così, perché?
sensibilità caso è la norma nella maggior parte dei linguaggi di programmazione e ambienti, perché le lettere minuscole e superiore sono rappresentati in modo diverso ai livelli più bassi. Per un computer, "a" e "A" sono due cose completamente diverse, e ci vuole del lavoro extra per farlo agire come se fossero gli stessi.
Inoltre, alcune lingue hanno regole speciali molto difficili per l'involucro, ad es. la lettera tedesca ß non ha la versione maiuscola ed è tipicamente maiuscola in "SS", quindi "weiß" e "WEISS" devono essere considerati sintatticamente identici? Ancora peggio è il turco: hanno due lettere separate io con e senza un punto e ognuna ha la sua versione maiuscola. Quindi in Turchia "IMAGE" è non la versione maiuscola di "immagine"! E questo non è affatto irrilevante, specialmente per Java, dal momento che puoi usare tutte queste lettere come identificatori nei tuoi programmi Java, se vuoi.
Alla luce di tutto questo, è molto comprensibile che i progettisti di linguaggi di programmazione scelgano la soluzione semplice di fare in modo che la sintassi sia case sensitive.
Penso che le lingue senza distinzione tra maiuscole e minuscole possano facilmente esistere senza il problema che si menziona. Se si consente agli identificatori/variabili/costanti/ecc. Nel programma di essere costituiti solo da caratteri ASCII, il problema non esisterà più. Inoltre, anche se sei un programmatore francese, codificherò in inglese. Il tuo codice deve essere compreso da quante più persone possibile. Sì, altri caratteri speciali possono esistere (e lo saranno) nelle stringhe di caratteri all'interno del codice, ma questo è un problema completamente diverso. Non sto dicendo che il passaggio al caso-insensibilità dovrebbe essere fatto, sto solo dicendo che sarebbe facile. –
Infatti, HTML, CSS e SQL (e quindi PL/SQL) vengono in mente come esempi di linguaggi insensibili alle maiuscole e minuscole che non sembrano implodere a causa di 'ß' (sebbene sia un punto interessante). –
Se un linguaggio di programmazione deve essere case sensitive o non tende a dividere l'opinione tra i programmatori. Indipendentemente dal dibattito, è importante ricordare che Java è case sensitive. Significa semplicemente che il caso delle lettere nei tuoi programmi Java è importante. Ad esempio, si supponga di decidere di creare tre variabili denominate "endLoop", "Endloop" e "EnDlOoP". Anche se in inglese vediamo i nomi delle variabili come dire la stessa cosa, Java no. Li tratterà tutti in modo diverso.
Quale carattere Unicode è? –
@Cole "Cole9" Johnson ß LATIN SMALL LETTER SHARP S Unicode: U + 00DF, UTF-8: C3 9F –
An, eh? Allora perché '' in minuscolo (U + 00DF) 'risulta in' ss'? Sono sicuro che sarebbe semplicemente 's'. –