JavaRush /Java Blog /Random-IT /Letterali in Java

Letterali in Java

Pubblicato nel gruppo Random-IT
Nella fase di creazione di un'applicazione, lo sviluppatore, di norma, conosce solo la sua struttura e non presume quali dati elaborerà. Tuttavia, in alcune situazioni, è necessario specificare esplicitamente alcuni dati nel codice del programma (ad esempio, il numero di iterazioni o il messaggio da emettere). In questo caso, i letterali vengono in soccorso. Contenuto:

Cosa sono i letterali?

I valori letterali sono valori specificati esplicitamente nel codice del programma: costanti di un certo tipo presenti nel codice al momento del lancio.
class Test {
   public static void main(String[] args) {
       System.out.println("Hello world!");
   }
}
In questa lezione “Ciao mondo!” - letterale. I letterali sono di diversi tipi, determinati dal loro scopo e dal modo in cui sono scritti.

Tipi di letterali e loro usi

Tutti i letterali sono valori primitivi (stringhe, numeri, caratteri, booleani). Non è possibile creare un oggetto letterale. L'unico letterale associato a un oggetto è null. Secondo le primitive, anche i letterali sono divisi in sezioni:
  1. Numerico:
    • Numeri interi;
    • Virgola mobile;
  2. Corda;
  3. Carattere;
  4. Rompicapo.

Letterali numerici

Letterali interi

Questo tipo di letterale è il più semplice. I numeri sono scritti nella loro forma standard senza indicare caratteri o altro. Qualsiasi numero intero è un valore letterale intero per impostazione predefinita. Cioè, puoi impostare esplicitamente il valore di una variabile o il numero di iterazioni in un ciclo. Java supporta 4 sistemi numerici:
  • Binario
  • Ottale
  • Decimale
  • Esadecimale
JDK 7 ha introdotto la possibilità di scrivere valori binari . Questo viene fatto utilizzando il prefisso 0b o 0B . Poi viene la scrittura utilizzando 0 e 1. I numeri in ottale vengono scritti utilizzando uno 0 iniziale. Le cifre valide sono da 0 a 7. La scrittura di 09 o 08 causerà un errore di compilazione. Non ci sono problemi con il sistema decimale : i numeri sono indicati nella forma a noi familiare. L'unica limitazione è che il numero non può iniziare con 0, poiché il compilatore lo prenderà come ottale. I numeri in esadecimale vengono scritti utilizzando i prefissi 0x e 0X. I numeri validi sono compresi tra 0 e 15, dove i numeri 10-15 sono indicati rispettivamente dai simboli AF.
public static void main(String[] args) {
       int a = 0b1101010110;
       int b = 012314;
       int c = 456;
       int d = 0x141D12;
       System.out.println("Число a в двоичной системе: " + a);
       System.out.println("Число b в восьмеричной системе: " + b);
       System.out.println("Число c в десятичной системе: " + c);
       System.out.println("Число d в шестнадцатеричной системе: " + d);
}
Risultato: Numero a nel sistema binario: 854 Numero b nel sistema ottale: 5324 Numero c nel sistema decimale: 456 Numero d nel sistema esadecimale: 1318162 Nonostante i numeri siano specificati in diversi sistemi numerici, nel programma vengono elaborati come decimali numeri. Il superamento dei valori comporterà un errore di compilazione:
int b = 012914; // Ошибка
int d = 0x141Z12; // Ошибка
Quando eseguito in fase di compilazione, otteniamo il seguente risultato:

Error:(13, 25) java: integer number too large: 012914
Error:(14,30) java: ';' expected
Che ne dici di digitare? Qualsiasi letterale intero ha un tipo predefinito di int. Se il suo valore è esterno ai limiti della variabile assegnata, si verifica un errore di compilazione. Quando si utilizza un tipo, longè necessario inserire un simbolo alla fine Lche indichi questo tipo:
long x = 0x1101010110; // Ошибка
long b = 1342352352351351353L; // Все в порядке
Il tentativo di compilare restituisce il seguente errore:

Error(11, 26) java: integer number too large: 1101010110

Letterali in virgola mobile

I numeri in virgola mobile, o numeri frazionari, possono essere scritti in due modi. La prima è come una classica frazione decimale: 3.14159 o 2.718281282459045. Il secondo è in forma scientifica, cioè una frazione decimale ordinaria più un suffisso sotto forma di simbolo e o E e la potenza di 10 per la quale deve essere moltiplicata la frazione specificata. Ad esempio, 4.05E-13, ciò significa 4.05 * 10 -13 .
double a = 2.718281828459045;
double d = 4.05E-13;
System.out.println("Тип double в классическом виде: " + a);
System.out.println("Тип double в научном виде: " + d);
Risultato: Doppio tipo classico: 2.718281828459045 Doppio tipo scientifico: 4.05E-13 A differenza dei numeri interi e dei sistemi numerici, la notazione scientifica viene memorizzata in una variabile ed elaborata allo stesso modo della notazione classica. Che ne dici di digitare? Qualsiasi numero in virgola mobile crea un tipo double. Se è necessario utilizzare il tipo float, è necessario aggiungere un fo alla fine F. In questo caso doubleverrà ridotto al tipo float. Ciò non avviene automaticamente:
float a = 2.718281828459045; // Ошибка
float d = 4.05E-13F; // Все в порядке
Quando si avvia la fase di compilazione, viene visualizzato il seguente errore:

Error:(11, 27) java: incompatible types: possible lossy conversion from double to float

Stringhe letterali

Le stringhe letterali sono un insieme di caratteri racchiusi tra virgolette doppie. Questo tipo viene utilizzato tanto spesso quanto i valori letterali numerici. La riga può contenere anche caratteri di servizio che devono essere sottoposti a escape (le cosiddette sequenze di escape). Esempio:
String simpleString = "Это обычная строка. Такая же стандартная и непримечательная, How и все мы.";
String uniqueString = "А это необычная \"строка\". Хотя бы потому, что часть \"слов\" в ней в \"кавычках\".";
System.out.println(simpleString);
System.out.println(uniqueString);
Output: questa è una stringa normale. Standard e insignificanti come il resto di noi. E questa è una “linea” insolita. Se non altro perché alcune delle "parole" in esso contenute sono tra "virgolette".

Letterali dei caratteri

I caratteri letterali in Java sono rappresentati dal set di caratteri Unicode, ovvero ogni carattere è un valore a 16 bit. Per indicare un simbolo nel codice, è separato da virgolette singole. In base all'esperienza, esistono due tipi di simboli:
  1. Quelli che possono essere inseriti dalla tastiera sono caratteri normali;
  2. Simboli che non possono essere inseriti semplicemente dalla tastiera (simboli di varie lingue, forme e così via).
I caratteri regolari possono essere specificati esplicitamente: ' ,' o ' @'. Se un carattere è un carattere di servizio (ad esempio, un'interruzione di riga o una tabulazione), tale carattere deve essere preceduto da una barra rovesciata. I caratteri che non possono essere semplicemente immessi dalla console possono essere specificati nella loro forma a 16 bit. Per fare ciò, è necessario specificare il codice carattere con un prefisso \u, ad esempio ' \u00F7'. Puoi anche specificare i caratteri in stile ottale (numero di tre cifre) semplicemente aggiungendo una barra rovesciata all'inizio, ad esempio ' \122'. Secondo me è molto più semplice da usare \u. Esempio di utilizzo:
System.out.println("Амперсанд - " + '&');
System.out.println("Символ деления - " + '\u00F7');
Uscita: E commerciale - e simbolo di divisione - ÷

Letterali booleani

Il letterale più semplice è logico. Ci sono solo 2 valori: falsee true, che vengono specificati esplicitamente senza simboli vari. Tali valori letterali possono essere assegnati a variabili di tipo booleano o specificati in un luogo in cui è previsto il tipo booleano (ad esempio, in un blocco if, sebbene questa pratica sia considerata cattiva educazione, per usare un eufemismo).
boolean flag = false;

if(true) {
    // Действия будут выполняться всегда.
}

Tecnica Jedi con letterali

Grazie ai simboli in Java puoi fare molte cose interessanti, inclusa la gestione degli emoji. Ad esempio, mostriamo una faccia sorridente:
int smile = 0x1F600; // Здесь шестнадцатеричный code эмоджи
StringBuilder sb = new StringBuilder();
sb.append(Character.toChars(smile)); // Собираем в StringBuilder
System.out.println("Улыбающееся лицо: " + sb.toString()); // Выводим
Conclusione: faccina sorridente: 😀 Anche se la visualizzazione delle emoji può essere inquietante (a seconda dell'implementazione), questa soluzione fa bene il lavoro. Tuttavia, è difficile cercare l'emoji desiderata nella tabella di codifica standard; la sezione Emoticon sul sito ufficiale è scarsa. È molto più semplice utilizzare librerie aggiuntive.

Letterali nel corso JavaRush

Nel corso JavaRush, i letterali vengono studiati al livello 10 nella lezione 8 del corso Java Syntax , dove gli esempi spiegano cosa sono i letterali e perché sono necessari. JavaRush è un corso online sulla programmazione Java con particolare attenzione alla pratica: oltre 1200 attività con verifica istantanea, miniprogetti, giochi.

Conclusione

I letterali in Java sono una cosa conveniente in qualsiasi programma, ma devono essere usati dove è appropriato. Non è necessario codificare nel codice sorgente i parametri di connessione al database o eventuali valori che potrebbero cambiare durante il ciclo di vita del programma.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION