Think Java 2nd Ed.
L’obiettivo di questo libro è quello di insegnare a pensare come un informatico.Questo modo di pensare combina alcune delle migliori caratteristiche della matematica, dell’ingegneria e delle scienze naturali.Come i matematici, gli informatici usano i linguaggi formali per indicare le idee, in particolare i calcoli.Come gli ingegneri, progettano le cose, assemblando i componenti in sistemi e valutando i compromessi tra le alternative.E come gli scienziati, osservano il comportamento di sistemi complessi, formano ipotesi e testano le previsioni.
Un’abilità importante per un informatico è un problema solving.It implica la capacità di formulare problemi, pensare in modo creativo alle soluzioni ed esprimere le soluzioni in modo chiaro e accurately.As si scopre che il processo di apprendimento per programmare i computer è un’eccellente opportunità per sviluppare capacità di risoluzione dei problemi.A un certo livello, imparerai a scrivere programmi Java, un’abilità utile da sola.Ma su un altro livello, userai la programmazione come mezzo per un end.As andiamo avanti, quella fine diventerà più chiara.
- 1.1 Che cos’è un computer?
- 1.2 Che cos’è la programmazione?
- 1.3 Il programma Hello World
- 1.4 Compilazione di programmi Java
- 1.5 Visualizzazione di due messaggi
- 1.6 Formattazione del codice sorgente
- 1.7 Utilizzando le sequenze di escape
- 1.8 Che cos’è l’informatica?
- 1.9 Programmi di debug
- 1.10 Vocabolario
- 1.11 Esercizi
1.1 Che cos’è un computer?
Quando le persone sentono la parola computer, spesso pensano a un desktop o un laptop.Non sorprende che la ricerca di” computer ” su Google Immagini (https://images.google.com/) visualizzi righe e righe di questi tipi di macchine.Tuttavia, in un senso più generale, un computer può essere qualsiasi tipo di dispositivo che memorizza ed elabora i dati.
Dictionary.com definisce un computer come ” un dispositivo elettronico programmabile progettato per accettare dati, eseguire operazioni matematiche e logiche prescritte ad alta velocità e visualizzare i risultati di queste operazioni.Mainframe, computer desktop e portatili, tablet e smartphone sono alcuni dei diversi tipi di computer.”
Ogni tipo di computer ha il suo design unico, ma internamente condividono tutti lo stesso tipo di hardware.I due componenti hardware più importanti sono processori (o CPU) che eseguono semplici calcoli e memoria (o RAM) che memorizza temporaneamente le informazioni.La figura 1.1 mostra l’aspetto di questi componenti.
Figura 1.1: Esempio processore e memoria hardware.
Gli utenti generalmente vedono e interagiscono con touchscreen, tastiere e monitor, ma sono i processori e la memoria che eseguono il calcolo effettivo.Al giorno d’oggi è abbastanza standard, anche per uno smartphone, avere almeno otto processori e quattro gigabyte (quattro miliardi di celle) di memoria.
1.2 Che cos’è la programmazione?
Un programma è una sequenza di istruzioni che specifica come eseguire un calcolo sull’hardware del computer.Il calcolo potrebbe essere qualcosa di matematico, come risolvere un sistema di equazioni o trovare le radici di un polinomio.Potrebbe anche essere un calcolo simbolico, come cercare e sostituire il testo in un documento o (stranamente) compilare un programma.
I dettagli hanno un aspetto diverso in diverse lingue, ma alcune istruzioni di base appaiono in quasi tutte le lingue:
input: ottieni dati dalla tastiera, da un file, da un sensore o da qualche altro dispositivo. output: Visualizzare i dati sullo schermo, o inviare i dati a un file o altro dispositivo. matematica: Eseguire operazioni matematiche di base come addizione e divisione. decisione: verificare la presenza di determinate condizioni ed eseguire il codice appropriato. ripetizione: Esegui un’azione ripetutamente, di solito con qualche variazione.
Che ci crediate o no, questo è praticamente tutto ciò che c’è da fare.Ogni programma che hai mai usato, non importa quanto sia complicato, è costituito da piccole istruzioni che assomigliano molto these.So puoi pensare alla programmazione come al processo di scomposizione di un’attività grande e complessa in sottoattività sempre più piccole.Il processo continua fino a quando le attività secondarie sono abbastanza semplici da essere eseguite con i circuiti elettronici forniti dall’hardware.
1.3 Il programma Hello World
Tradizionalmente, il primo programma che scrivi quando impari un nuovo linguaggio di programmazione si chiama “Hello World”.Tutto ciò che fa è uscita le parole Ciao, Mondo! al screen.In Java, assomiglia a questo:
Quando questo programma viene eseguito, visualizza quanto segue:
Ciao, Mondo!
Si noti che l’output non include le virgolette.
I programmi Java sono costituiti da definizioni di classi e metodi e i metodi sono costituiti da istruzioni.Un’istruzione è una riga di codice che esegue un’azione di base.Nel programma Hello World, questa riga è un’istruzione print che visualizza un messaggio all’utente:
Sistema.fuori.println (“Ciao, Mondo!”);
System.out.println
visualizza i risultati sullo schermo; il nome println
sta per “linea di stampa”.Confusamente, la stampa può significare sia ” display sullo schermo “che”invia alla stampante”. In questo libro, proveremo a dire” display ” quando intendiamo l’output sullo schermo.Come la maggior parte delle istruzioni, l’istruzione print termina con un punto e virgola (;
).
Java è “case-sensitive”, il che significa che maiuscolo e minuscolo non sono gli stessi.Nel programma Hello World, System
deve iniziare con una lettera maiuscola; system
e SYSTEM
non funzioneranno.
Un metodo è una sequenza di istruzioni con nome.Questo programma definisce un metodo denominato main
:
public static void main (argomenti di stringa)
Il nome e il formato di main
sono speciali: quando il programma viene eseguito, inizia dalla prima istruzione in main
e termina quando termina l’ultima istruzione.Più tardi, vedrai programmi che definiscono più di un metodo.
Questo programma definisce una classe denominata Hello
.Per ora, una classe è una raccolta di metodi; avremo altro da dire su questo più tardi.Puoi dare a una classe qualsiasi nome che ti piace, ma è convenzionale iniziare con una lettera maiuscola.Il nome della classe deve corrispondere al nome del file in cui si trova, quindi questa classe deve essere in un file chiamato Hello.Java.
Java utilizza parentesi graffe ({
e }
) per raggruppare le cose together.In Salve.java, le parentesi più esterne contengono la definizione della classe e le parentesi interne contengono la definizione del metodo.
La riga che inizia con due barre (//
) è un commento, che è un po ‘ di testo inglese che spiega il codice.Quando Java vede //
, ignora tutto da lì fino alla fine della riga.I commenti non hanno alcun effetto sull’esecuzione del programma, ma rendono più facile per gli altri programmatori (e il tuo futuro sé) capire cosa intendevi fare.
1.4 Compilazione di programmi Java
Il linguaggio di programmazione che imparerai in questo libro è Java, che è un linguaggio di alto livello.Altri linguaggi di alto livello di cui potresti aver sentito parlare includono Python, C e C++, PHP, Ruby e JavaScript.
Prima di poter essere eseguiti, i programmi in lingue di alto livello devono essere tradotti in un linguaggio di basso livello, chiamato anche “linguaggio macchina”.Questa traduzione richiede un po ‘ di tempo, il che è un piccolo svantaggio delle lingue di alto livello.Ma le lingue di alto livello hanno due vantaggi principali:
- È molto più facile programmare in un linguaggio di alto livello.I programmi richiedono meno tempo per scrivere, sono più brevi e più facili da leggere e hanno maggiori probabilità di essere corretti.
- Le lingue di alto livello sono portatili, il che significa che possono essere eseguite su diversi tipi di computer con poche o nessuna modifica.I programmi di basso livello possono essere eseguiti su un solo tipo di computer.
Due tipi di programmi traducono lingue di alto livello in lingue di basso livello: interpreti e compilers.An l’interprete legge un programma di alto livello e lo esegue, il che significa che fa ciò che il programma says.It elabora il programma un po ‘ alla volta, leggendo alternativamente linee ed eseguendo calcoli.La figura 1.2 mostra la struttura di un interprete.
Figura 1.2: Come vengono eseguite le lingue interpretate.
Al contrario, un compilatore legge l’intero programma e lo traduce completamente prima che il programma inizi a funzionare.Il programma di alto livello è chiamato il codice sorgente.Il programma tradotto è chiamato codice oggetto o eseguibile.Una volta compilato un programma, è possibile eseguirlo ripetutamente senza ulteriori traduzioni della fonte code.As di conseguenza, i programmi compilati spesso funzionano più velocemente dei programmi interpretati.
Si noti che il codice oggetto, come linguaggio di basso livello, non è portabile.Non è possibile eseguire un eseguibile compilato per un laptop Windows su un telefono Android, per example.To eseguire un programma su diversi tipi di macchine, deve essere compilato più times.It può essere difficile scrivere codice sorgente che compila e funziona correttamente su diversi tipi di macchine.
Per risolvere questo problema, Java viene compilato e interpretato.Invece di tradurre il codice sorgente direttamente in un eseguibile, il compilatore Java genera codice per una macchina virtuale.Questa macchina “immaginaria” ha le funzionalità comuni a desktop, laptop, tablet, telefoni, ecc.Il suo linguaggio, chiamato Java byte code, si presenta come codice oggetto ed è facile e veloce da interpretare.
Di conseguenza, è possibile compilare un programma Java su una macchina, trasferire il codice byte su un’altra macchina ed eseguire il codice byte su quell’altra macchina.La figura 1.3 mostra le fasi del processo di sviluppo.Il compilatore Java è un programma denominato javac.It traduce .file java in .file di classe che memorizzano il codice byte risultante.L’interprete Java è un altro programma, chiamato java, che è l’abbreviazione di “Java Virtual Machine” (JVM).
Figura 1.3: Il processo di compilazione ed esecuzione di un programma Java.
Il programmatore scrive il codice sorgente nel file Hello.java e utilizza javac per compilarlo.Se non ci sono errori, il compilatore salva il codice byte nel file Hello.class.To eseguire il programma, il programmatore utilizza java per interpretare il codice byte.Il risultato del programma viene quindi visualizzato sullo schermo.
Sebbene possa sembrare complicato, questi passaggi sono automatizzati nella maggior parte degli ambienti di sviluppo.Di solito, devi solo premere un pulsante o digitare un singolo comando per compilare e interpretare il tuo programma.D’altra parte, è importante sapere quali passi stanno accadendo in background, quindi se qualcosa va storto puoi capire di cosa si tratta.
1.5 Visualizzazione di due messaggi
Puoi inserire tutte le istruzioni che vuoi nel metodo main
.Ad esempio, per visualizzare più di una riga di output:
Come mostra anche questo esempio, è possibile inserire commenti alla fine di una riga e su righe da soli.
Le frasi che appaiono tra virgolette sono chiamate stringhe, perché contengono una sequenza di caratteri messi insieme in memoria.I caratteri possono essere lettere, numeri, segni di punteggiatura, simboli, spazi, schede, ecc.
System.out.println
aggiunge un carattere speciale, chiamato nuova riga, che si sposta all’inizio della riga successiva.Se non vuoi una nuova riga alla fine, puoi usare print
invece di println
:
In questo esempio, la prima istruzione non aggiunge una nuova riga, quindi l’output viene visualizzato su una singola riga:
Addio, mondo crudele
Si noti che c’è uno spazio alla fine della prima stringa, che appare nell’output poco prima della parola crudele.
1.6 Formattazione del codice sorgente
Nel codice sorgente Java sono necessari alcuni spazi.Ad esempio, è necessario almeno uno spazio tra le parole, quindi questo programma non è legale:
publicclassGoodbye {publicstaticvoidmain (String args) { Sistema.fuori.stampa (“Addio”); Sistema.fuori.println (“mondo crudele”); }}
Ma la maggior parte degli altri spazi sono opzionali.Ad esempio, questo programma è legale:
Le nuove righe sono opzionali, too.So potremmo semplicemente scrivere questo:
Funziona ancora, ma il programma sta diventando sempre più difficile da leggere.Newline e spazi sono importanti per organizzare visivamente il programma, rendendo più facile capire il programma e trovare gli errori quando si verificano.
Molti editor formatteranno automaticamente il codice sorgente con rientri coerenti e interruzioni di riga.Ad esempio, in DrJava (vedi Appendice A. 1) è possibile indentare il codice selezionando tutto il testo (Ctrl+A) e premendo il tasto Tab.
Le organizzazioni che fanno un sacco di sviluppo software di solito hanno linee guida rigorose su come formattare il codice sorgente.Ad esempio, Google pubblica i suoi standard di codifica Java per l’utilizzo in progetti open source: https://google.github.io/styleguide/javaguide.html.
Probabilmente non capirai queste linee guida ora, perché si riferiscono a funzionalità linguistiche che non hai ancora visto.Ma si potrebbe desiderare di fare riferimento a loro periodicamente come si legge questo libro.
1.7 Utilizzando le sequenze di escape
È possibile visualizzare più righe di output con una sola riga di codice.Devi solo dire a Java dove mettere le interruzioni di riga:
L’output è di due righe, ciascuna delle quali termina con un carattere di nuova riga:
Ciao!Come va?
Ogni \n
è una sequenza di escape o due caratteri del codice sorgente che rappresentano un singolo carattere.(La barra rovesciata consente di sfuggire alla stringa per scrivere caratteri speciali.) Si noti che non c’è spazio tra \n
e How
.Se aggiungi uno spazio lì, ci sarà uno spazio all’inizio della seconda riga.
\n
newline \t
scheda \"
doppia citazione \
barra rovesciata Tabella 1.1: Comune di sequenze di escape
Java ha un totale di otto sequenze di escape, e i quattro più comunemente utilizzati sono elencati nella Tabella 1.1.Ad esempio, per scrivere virgolette all’interno delle stringhe, è necessario sfuggirle con una barra rovesciata:
Sistema.fuori.println (“Ha detto \” Ciao!\ “a me.”);
Il risultato è il seguente:
Ha detto ” Ciao!”a me.
1.8 Che cos’è l’informatica?
Questo libro omette intenzionalmente alcuni dettagli sul linguaggio Java (come le altre sequenze di escape), perché il nostro obiettivo principale è insegnarti a pensare come un informatico.Essere in grado di comprendere il calcolo è molto più prezioso del semplice imparare a scrivere codice.
Se sei interessato a saperne di più su Java stesso, Oracle mantiene un set ufficiale di tutorial sul suo sito web (https://thinkjava.org/tutorial).Il tutorial” Nozioni di base sulla lingua”, che si trova sotto “Imparare il linguaggio Java”, è un buon punto di partenza.
Uno degli aspetti più interessanti dei programmi di scrittura è decidere come risolvere un particolare problema, specialmente quando ci sono più soluzioni.Ad esempio, ci sono numerosi modi per ordinare un elenco di numeri e ogni modo ha il suo advantages.In per determinare quale sia il modo migliore per una data situazione, abbiamo bisogno di tecniche per descrivere e analizzare le soluzioni formalmente.
Un algoritmo è una sequenza di passaggi che specifica come risolvere un problema.Alcuni algoritmi sono più veloci di altri e alcuni usano meno spazio nella memoria del computer.L’informatica è la scienza degli algoritmi, compresa la loro scoperta e analysis.As impari a sviluppare algoritmi per problemi che non hai risolto prima, imparerai a pensare come un informatico.
Progettare algoritmi e scrivere codice è difficile e soggetto a errori.Per ragioni storiche, gli errori di programmazione sono chiamati bug e viene chiamato il processo di rintracciarli e correggerli debugging.As impari a eseguire il debug dei tuoi programmi, svilupperai nuove capacità di risoluzione dei problemi.Dovrai pensare in modo creativo quando si verificano errori imprevisti.
Anche se può essere frustrante, il debug è una parte intellettualmente ricca, stimolante e interessante del computer science.In in qualche modo, il debug è come un lavoro da detective.Ti trovi di fronte a indizi e devi dedurre i processi e gli eventi che hanno portato ai risultati che vedi.Pensare a come correggere i programmi e migliorare le loro prestazioni a volte porta anche alla scoperta di nuovi algoritmi.
1.9 Programmi di debug
È una buona idea leggere questo libro davanti a un computer in modo da poter provare gli esempi mentre vai.È possibile eseguire molti degli esempi direttamente nel riquadro Interazioni di DrJava (vedere Appendice A. 2).Ma se metti il codice in un file sorgente, sarà più facile provare le variazioni.
Ogni volta che si sta sperimentando con una nuova funzionalità, si dovrebbe anche cercare di fare errori.Ad esempio, nel programma Hello World, cosa succede se si omette una delle virgolette?E se lasci fuori entrambi?Cosa succede se si scrive println
sbagliato?Questi tipi di esperimenti ti aiutano a ricordare ciò che leggi.Aiutano anche con il debug, perché si impara quali sono i messaggi di errore mean.It è meglio commettere errori ora e di proposito che più tardi e accidentalmente.
Il debug è come una scienza sperimentale: una volta che hai un’idea di cosa sta andando storto, modifichi il tuo programma e riprova.Se la tua ipotesi era corretta, puoi prevedere il risultato della modifica e fai un passo avanti verso un programma di lavoro.Se la tua ipotesi era sbagliata, devi inventarne una nuova.
La programmazione e il debug dovrebbero andare di pari passo.Non basta scrivere un po ‘ di codice e quindi eseguire il debug di tentativi ed errori finché non funziona tutto.Invece, iniziare con un programma che fa qualcosa e fare piccole modifiche, il debug di loro come si va, fino a quando il programma fa quello che vuoi.In questo modo, avrai sempre un programma funzionante e isolare gli errori sarà più facile.
Un grande esempio di questo principio è il sistema operativo Linux, che contiene milioni di linee di code.It iniziato come un semplice programma Linus Torvalds utilizzato per esplorare il chip Intel 80386.Secondo Larry Greenfield nella Linux Users’ Guide, ” Uno dei progetti precedenti di Linus era un programma che avrebbe cambiato la stampa tra AAAA e BBBB.Questo in seguito si è evoluto in Linux.”
Infine, la programmazione a volte tira fuori forti emozioni.Se stai lottando con un bug difficile, potresti sentirti arrabbiato, scoraggiato o imbarazzato.Ricordate che non siete soli, e praticamente ogni programmatore ha avuto esperienze simili.Non esitate a contattare un amico e fare domande!
1.10 Vocabolario
In tutto il libro, cerchiamo di definire ogni termine la prima volta che usiamo it.At alla fine di ogni capitolo, includiamo i nuovi termini e le loro definizioni in ordine di apparizione.Se passi un po ‘ di tempo ad imparare questo vocabolario, avrai un tempo più facile leggendo i seguenti capitoli.
problem solving: il processo di formulazione di un problema, trovare una soluzione ed esprimere la soluzione. hardware: I componenti elettronici e meccanici di un computer, come CPU, RAM e dischi rigidi. processore: Un chip di computer che esegue semplici istruzioni come aritmetica di base e logica. memoria: Circuiti che memorizzano i dati fino a quando il computer è acceso.Da non confondere con dispositivi di archiviazione permanenti come dischi rigidi e flash. programma: Una sequenza di istruzioni che specifica come eseguire attività su un computer.Conosciuto anche come”software”. programmazione: L’applicazione del problem solving alla creazione di programmi per computer eseguibili. istruzione: Parte di un programma che specifica un passo di un algoritmo. istruzione print: un’istruzione che fa sì che l’output venga visualizzato sullo schermo. metodo: Una sequenza denominata di istruzioni. classe: Per ora, una raccolta di metodi correlati.(Vedrete più tardi che c’è molto di più ad esso.) commento: Una parte di un programma che contiene informazioni sul programma, ma non ha alcun effetto quando il programma viene eseguito. linguaggio di alto livello: un linguaggio di programmazione progettato per essere facile da leggere e scrivere per gli esseri umani. linguaggio di basso livello: un linguaggio di programmazione progettato per essere facile da eseguire per un computer.Chiamato anche “linguaggio macchina”. portatile: la capacità di un programma di funzionare su più di un tipo di computer. interpretare: Eseguire un programma in un linguaggio di alto livello traducendolo una riga alla volta ed eseguendo immediatamente le istruzioni corrispondenti. compile: Per tradurre un programma in un linguaggio di alto livello in un linguaggio di basso livello, tutto in una volta, in preparazione per l’esecuzione successiva. codice sorgente: Un programma in un linguaggio di alto livello, prima di essere compilato. codice oggetto: L’output del compilatore, dopo aver tradotto il programma. eseguibile: un altro nome per il codice oggetto che è pronto per essere eseguito su hardware specifico. macchina virtuale: Un’emulazione di una macchina reale. La JVM consente a un computer di eseguire programmi Java. codice byte: un tipo speciale di codice oggetto utilizzato per i programmi Java.Il codice byte è simile al codice oggetto, ma è portatile come un linguaggio di alto livello. stringa: Una sequenza di caratteri; il tipo di dati primario per il testo. newline: Un carattere speciale che indica la fine di una riga di testo.Conosciuto anche come” fine riga”,” fine riga “(EOL) o”interruzione di riga”. escape sequence: Una sequenza di codice che rappresenta un carattere speciale quando viene utilizzato all’interno di una stringa. algoritmo: una procedura o una formula per risolvere un problema, con o senza un computer. informatica: L’approccio scientifico e pratico al calcolo e alle sue applicazioni. bug: Un errore in un programma. debugging: il processo di ricerca e rimozione degli errori.
1.11 Esercizi
Alla fine di ogni capitolo, includiamo esercizi che puoi fare con le cose che hai imparato.Vi invitiamo a tentare almeno ogni problema.Non si può imparare a programmare solo leggendo su di esso; si deve praticare.
Prima di poter compilare ed eseguire programmi Java, potrebbe essere necessario scaricare e installare alcuni strumenti.Ci sono molte buone opzioni, ma raccomandiamo DrJava, che è un “ambiente di sviluppo integrato” (IDE) adatto ai principianti.Le istruzioni per iniziare sono nell’Appendice A.
Il codice di questo capitolo si trova nella directory ch01 di ThinkJavaCode2.Vedi pagina ?? per istruzioni su come scaricare il repository.Prima di iniziare gli esercizi, ti consigliamo di compilare ed eseguire gli esempi.
Gli informatici hanno la fastidiosa abitudine di usare parole inglesi comuni per significare qualcosa di diverso dai loro comuni significati inglesi.Ad esempio, in inglese, dichiarazioni e commenti sono la stessa cosa, ma nei programmi sono diversi.
- In gergo informatico, qual è la differenza tra una dichiarazione e un commento?
- Cosa significa dire che un programma è portatile?
- In inglese comune, cosa significa la parola compile?
- Che cos’è un eseguibile? Perché quella parola è usata come sostantivo?
La sezione vocabolario alla fine di ogni capitolo ha lo scopo di evidenziare parole e frasi che hanno significati speciali in informatica.Quando vedi parole familiari, non dare per scontato che sai cosa significano!
Prima di fare qualsiasi altra cosa, scopri come compilare ed eseguire un programma Java.Alcuni ambienti forniscono programmi di esempio simili all’esempio nella Sezione 1.3.
- Digitare il programma Hello World; quindi compilarlo ed eseguirlo.
- Aggiungi un’istruzione print che visualizza un secondo messaggio dopo Hello, World!.Dire qualcosa di spiritoso come, Come stai?.Compilare ed eseguire nuovamente il programma.
- Aggiungere un commento al programma (ovunque), ricompilarlo ed eseguirlo di nuovo.Il nuovo commento non dovrebbe influire sul risultato.
Questo esercizio può sembrare banale, ma è il punto di partenza per molti dei programmi che lavoreremo with.To debug con fiducia, è necessario avere fiducia nel proprio ambiente di programmazione.
In alcuni ambienti, è facile perdere traccia di quale programma è in esecuzione.Potresti trovarti a provare a eseguire il debug di un programma mentre ne stai accidentalmente eseguendo un altro.Aggiungere (e modificare) le istruzioni di stampa è un modo semplice per essere sicuri che il programma che stai guardando sia il programma che stai eseguendo.
È una buona idea commettere tutti gli errori che puoi pensare, in modo da vedere quali messaggi di errore produce il compilatore.A volte il compilatore ti dice esattamente cosa c’è che non va e tutto quello che devi fare è risolverlo.Ma a volte i messaggi di errore sono fuorvianti.Nel tempo svilupperai un senso per quando puoi fidarti del compilatore e quando devi capire le cose da solo.
A partire dal programma Hello World, provare ciascuno dei seguenti errori.Dopo aver apportato ogni modifica, compilare il programma, leggere il messaggio di errore (se ce n’è uno) e quindi correggere l’errore.
- Rimuovere una delle parentesi graffe di apertura.
- Rimuovere una delle parentesi graffe di chiusura.
- Invece di
main
, scrivimian
. - Rimuovi la parola
static
. - Rimuovi la parola
public
. - Rimuovi la parola
System
. - Sostituire
println
conPrintln
. - Sostituire
println
conprint
. - Elimina una parentesi.
- Aggiungi una parentesi in più.