Livello di conoscenza richiesto per comprendere l'articolo: principiante. Stai studiando la ricerca sulla sintassi Java e sei più vicino ai suoi livelli iniziali.
Hai appena iniziato a imparare Java. Sei bombardato da termini come da una cornucopia. Sei carico di tonnellate di informazioni tecniche e talvolta ti confondi in tre pini. Credimi, visto che ti sei già dedicato alla programmazione, SARÀ SEMPRE COSÌ (in questo momento, una risata minacciosa risuona fuori campo, e una voce tranquilla, interrotta a metà frase, sussurra “Scappa... salvati prima è troppo tardi..."). I bug ti perseguiteranno per il resto della tua vita di programmazione, anche se sei il miglior sviluppatore. Tuttavia, questo non è affatto così spaventoso come sembra.
Se hai appena iniziato a imparare JavaRush, molto probabilmente hai già riscontrato i problemi sollevati nell'articolo. In ogni caso, saremo lieti di ricevere commenti che descrivano i problemi che hai avuto nei tuoi primi mesi di apprendimento di Java. |
Problema di livello 0: confusione con l'operatore di confronto (==) e l'operatore di assegnazione (=).
Questo è un problema molto comune per chi passa da altri linguaggi di programmazione. E in generale, fin dalle scuole elementari ci siamo abituati al fatto che
(=)
questo è un segno di uguale. Un semplice trucco che può essere utilizzato per ricordare è questo: se sai che ti interessa solo uno dei valori (assegni l'uno all'altro) usi un solo
=
segno " ", altrimenti se ti interessano tutte le variabili e valori (li confronti) hai bisogno di un doppio
==
segno " ".
Problema: utilizzare l'operatore di confronto (==) per testare l'equivalenza delle stringhe
Cosa fare: ricordare che
nessun oggetto Java può essere verificato per l'equivalenza utilizzando(==)
, poiché questo operatore è progettato per verificare l'uguaglianza dei tipi primitivi.
Per gli oggetti è necessario utilizzare il file
.equals()
. E
String
nel linguaggio Java non è altro che un oggetto (e
immutable
).
Un oggetto contrassegnato come Immutable è un oggetto il cui stato non può essere modificato dopo la creazione. In Java , ciò significa che tutti i campi di istanza di una classe sono contrassegnati come final e sono primitivi (o anche immutable ). |
Problema: concatenazione di stringhe in un ciclo
Non provarlo tu stesso! Ogni volta che le stringhe vengono concatenate, viene creato un nuovo oggetto
String
(come abbiamo scoperto sopra, le stringhe
immutable
sono immutabili). Ad un certo punto esaurirai la memoria o il programma inizierà a impiegare troppo tempo per essere completato.
Soluzione. Utilizzare
StringBuilder
invece
String
quando si concatena il contenuto in un ciclo. La classe
StringBuilder
viene utilizzata quando è necessario apportare molte modifiche a una stringa di caratteri. E tali linee, a differenza di
String
, non lo sono
immutable
.
Problema: NullPointerException
Questo tipo di eccezione si verifica quando proviamo a utilizzare un puntatore nullo
null
quando in realtà abbiamo bisogno di un oggetto reale.
Tutti i tipi primitivi hanno valori predefiniti. Quindi, y int è 0 e y boolean è false . Il valore predefinito di qualsiasi tipo di riferimento, ovvero degli oggetti, è null . Non è un oggetto o un tipo, è un valore speciale. Il che significa essenzialmente “qui non c’è niente”. |
Cosa fare: se il tuo codice è scritto in modo tale che ad un certo punto il tuo oggetto possa accettare il valore
null
, devi aggiungere un "check for
null
", soprattutto se non stai creando tu stesso l'oggetto. Ricorda inoltre che è meglio restituire raccolte vuote piuttosto che un insieme di
null
file . Sarebbe anche bello aggiungere la convalida per getter e setter.
Problema: per qualche motivo il ciclo if / while / for non funziona
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
Cosa c'è che non va qui? È semplice: un punto e virgola in più ha rovinato il sangue di centinaia di migliaia di programmatori Java alle prime armi. Beh, non ne avrai bisogno dopo
if ()
. Dal punto di vista del linguaggio, tale sintassi è abbastanza accettabile, quindi il compilatore non se ne lamenterà. Ma termina l'istruzione condizionale e il codice all'interno del blocco
{}
non soddisferà mai la condizione di cui sopra.
Soluzione: ricordare la logica di progettazione. Il segno “
;
” indica la fine di un certo blocco, ma qui tutto è solo all'inizio.
Problema: tentativo di accedere alle variabili membro non statiche da metodi statici (come main)
Soluzione . Questo problema è legato alla comprensione del concetto stesso
static
. Se un metodo è contrassegnato con questa parola, significa che non è necessario istanziare la classe per chiamare il metodo principale. Quindi la soluzione è avere una buona conoscenza della “statica” e comprenderne l’essenza.
Problema: provare a reinventare la ruota sviluppando librerie e strumenti già esistenti
Soluzione. In realtà non è un grosso problema. Per un principiante, questo è più un esercizio utile. Tuttavia, se vuoi concentrarti sul risultato, ad esempio creando un comodo database di abbonati, la ricerca di un abbonato nella rubrica è solo uno dei risultati della tua applicazione. In questo caso non è necessario scrivere un algoritmo di ricerca binaria. Utilizzane uno esistente (ti assicuriamo che qualcuno lo ha già scritto prima di te ed è nelle librerie standard). Quindi studia le librerie standard Java nella documentazione Oracle. Impara a Google, abituati a leggere Stack Overflow e fai domande sulla
guida JavaRush ! ...Naturalmente questi non sono tutti i problemi dei principianti. Descrivi il tuo nei commenti!
Sei interessato a leggere articoli relativi a Java? Unisciti al gruppo di sviluppatori Java .
Ci sono molte cose interessanti qui.
GO TO FULL VERSION