Non guardiamo alla prossima dichiarazione di controllo, che è un'istruzione switch, la cui istruzione ha molti
principianti coinvolti e sta davvero cercando di comprenderla molto chiaramente.
E mentre andiamo avanti vedremo anche alcuni codici e la maggior parte delle cose che impariamo, quindi iniziamo
con l'istruzione switch.
Un'istruzione switch può essere utilizzata come alternativa se l'istruzione non è lì allora può sentire.
Il che significa che non possiamo rappresentare tutte le istruzioni usando le istruzioni switch solo un determinato tipo
di istruzioni IF può essere rappresentato usando le istruzioni switch e vedremo cosa sono quelle.
Consideriamo questo se l'istruzione con un mese variabile è inizializzata a 3 se l'istruzione if ha una
sequenza di condizioni in cui ogni condizione si verifica semplicemente se il mese corrisponde a quel determinato valore qui mese è
3.
La terza condizione sarà vera sul valore di Springer.
Ora vediamo come è possibile rappresentare lo stesso codice usando un'istruzione switch.
Ed ecco la data dello switch e non è ancora completata.
Lo costruiremo gradualmente ma confrontandolo con l'esempio che abbiamo appena visto iniziare con la sintassi coinvolge le parole
chiave seguite da pattern assist con l'espressione switch e l'espressione switch è la variabile
month nel nostro esempio.
Pallidus Questo è seguito dalla parentesi graffa di apertura e chiusura delle parentesi indica che
la fine dell'istruzione switch sotto quel blocco di codice tra le due parentesi è indicato come un blocco di commutazione.
Ora notate che l'espressione dell'interruttore nell'analisi di potenza è semplicemente la variabile Mont ..
Quindi non è una condizione ma semplicemente una variabile.
Ma sappiamo che le dichiarazioni di flusso di controllo riguardano esclusivamente le condizioni.
Quindi abbiamo bisogno di come usare le condizioni per quell'affermazione. C'è una cosa chiamata affermazioni caso che è
stata la parola chiave risultato indovinata che è seguita da quella che viene chiamata etichetta caso
seguita da due punti e dopo i due punti potremmo avere alcune affermazioni ora una condizione sarebbe l'espressione dell'interruttore
rispetto all'etichetta di un caso che utilizza un operatore di uguaglianza.
Quindi nel nostro esempio abbiamo tre condizioni in cui la mente variabile viene abbinata alle etichette dei casi 1
2 e 3.
Poiché il mese è tre, sarà importante un terzo livello.
E così le dichiarazioni corrispondenti saranno eseguite.
Nota che questa espressione può anche essere una lettera.
Quindi, invece di avere un mese variabile in cui anche l'espressione inizia, si hanno invece i tre letterali che non
si possono fare come trattamento opzionale Bre-X.
E ottiene la stessa dichiarazione di non commutazione.
Questo è Dhammananda e l'abbigliamento cambia senza una dichiarazione di rottura.
Tutti i blocchi successivi vengono eseguiti in sequenza indipendentemente dai numeri del caso fino a quando non si verifica un'interruzione.
E configura l'istruzione break ostile ma poi la perde in quel blocco del caso Altrimenti viene visualizzato un
errore del compilatore in quanto qualsiasi istruzione successiva non è raggiungibile.
Non paragonando questo esempio con il nostro esempio, potresti chiederti che cosa corrisponde al blocco di default per
quello che supporta un blocco predefinito come puoi vedere qui.
Il blocco predefinito ha semplicemente la parola chiave default seguita da due punti, seguita da un blocco di codice
come qualsiasi blocco di classe.
Quindi il blocco predefinito non ha un'etichetta caso.
Non che possiamo vedere come al massimo uno prima del blocco, ma una differenza rispetto all'istruzione if è che il blocco predefinito
può essere seguito dai blocchi del caso in cui il blocco predefinito non deve essere l'ultimo blocco.
Tuttavia, se si richiama in una istruzione IF, il blocco else if deve essere l'ultimo blocco del chiamante.
Dal momento che il blocco frontale non deve essere l'ultimo blocco.
Può anche avere una dichiarazione di interruzione facoltativa.
Ora ecco una cosa importante da notare sul tipo di espressione chiedi quale espressione può essere un numero intero
che può essere un po 'come 7 o può essere una variabile intera o può anche essere un'espressione
che coinvolge più di una variabile come il bianco esplicito l'unico requisito è che il valore
finale che l'espressione valuta debba essere un numero intero no in una variabile intera può essere una variabile di tipo o uno qualsiasi dei
tipi di radar più piccoli.
Inoltre, la variabile può anche essere un'istanza di queste classi che è disponibile può
essere un riferimento a un oggetto e queste classi sono chiamate primitive baulks o classi wrapper come valore
primitivo wrapper.
Per esempio qui e una classe più grande preferirebbero un valore primitivo e valore.
Quindi in fase di esecuzione quando viene valutata la variabile, il valore primitivo verrà scartato e verrà
confrontato con le etichette.
Più avanti guardiamo ai modelli di Boxborough su come sono utili in quanto l'espressione può anche essere una stringa.
Su questo più solo dal 1 luglio in poi.
Quello che sta usando la stringa come espressione di switch in una versione precedente di Java
risulterà in un errore del compilatore.
Infine, l'espressione di un interruttore può anche essere un enum e l'enum verrà discusso molto più tardi.
L'espressione di superficie è qualcosa di diverso da questi tre.
Quindi otteniamo un errore del compilatore.
Inoltre, in tal caso, quale espressione valuta la conoscenza in fase di esecuzione, si ottiene un'eccezione di puntatore nullo.
Dal momento che hai menzionato Diflucan come l'oggetto fa riferimento a un'espressione switch.
C'è la possibilità di finire con un riferimento null.
Sto ricevendo un'eccezione del puntatore nullo ha scritto alcune cose da notare sulle etichette dei casi.
La restrizione è che il valore dell'etichetta regali deve essere compreso nell'intervallo del tipo di dati
dell'espressione switch.
Nella prossima tappa vedremo un esempio di questo.
La seconda restrizione è che il valore dell'etichetta di regali deve essere noto al momento della compilazione per non guardare
un esempio di questo.
Quindi non preoccupiamoci per ora.
La restrizione è che il valore dell'etichetta del caso deve essere univoco.
Ciò significa che non è possibile avere etichette case duplicate nella stessa istruzione switch.
Unfought è che Kislev non può essere nullo.
Se una qualsiasi di queste restrizioni non viene soddisfatta, si ottiene un errore del compilatore non storico la prima limitazione
con una sezione di esempio di Hustler è che il valore dell'etichetta del caso deve essere compreso nell'intervallo del tipo
di dati dell'espressione switch.
In questo esempio abbiamo dichiarato come byte, quindi sappiamo che l'intervallo del tipo di byte è da meno 128 a 127, quindi
le etichette del caso dovrebbero essere comprese in questo intervallo.
Poiché il secondo livello del caso è 128, che è al di fuori dell'intervallo di byte, si ottiene un errore del compilatore.
Non iniziamo da tutti.
Guarda questa particolare restrizione da guardare in questo momento, lascia che mostri che sono sul mio ID Eclipse e questo
è un vero disastro, ho risparmiato un po 'di tempo con le idee di Eclipse molto velocemente e
in questo particolare demobio dovremo compilare il programma più volte Sarebbe molto tempo senza l'utilizzo di
un ID.
Quindi, usando Eclipse, il programma sarà AACo compilato, quindi è molto facile dire che in pratica ci farà risparmiare un
po 'di tempo.
OK, quindi un nuovo metodo chiamato switch esempio è stato aggiunto alla classe demo di base e puoi
anche scaricarlo dalla sezione delle risorse ed è solo lo stesso esempio.
Quindi stiamo definendo una variabile chiamata mese con tre.
Ed ecco la dichiarazione dell'interruttore.
E qui ci sono le etichette più difficili sulle etichette più difficili.
Stiamo solo stampando i valori del mese e dobbiamo interrompere le dichiarazioni e abbiamo anche un valore predefinito.
Quindi fammi iniziare su questo programma.
Dobbiamo solo andare qui e fare clic su run e notare all'interno di quale esempio underspending March perché
il mese corrisponde al valore con il valore 3.
OK ora diamo un'occhiata a una delle cose che abbiamo detto che il tipo di espressione switch deve essere solo integer.
String o enim.
Quindi facciamo solo il doppio qui.
Quindi mettiamo solo due punti zero, che è un doppio valore.
E come puoi vedere lo mostra.
È sottolineato cosa con questa cosa rossa.
Quindi significa che c'è un errore di compilazione e dice che non è possibile attivare un valore di tipo double.
Quindi deve essere o l'intero e ordinato deve essere una stringa o un enum.
E abbiamo anche detto che possiamo usare una scatola Myrto come espressione di interruttore.
Quindi proviamo anche questo.
Quindi usiamo la classe Integer che il mese ha sottovalutato tre e,
come
puoi vedere, anche il compilatore è andato avanti se lo stai facendo funzionare ancora molto.
Quindi puoi usare la classe superiore come un intero.
E poi lasciami solo cancellare questo.
Diamo un'occhiata a questa gamma di restrizioni.
Leggere l'etichetta dovrebbe essere dovrebbe rientrare nell'intervallo dei dati dall'espressione interruttore.
Quindi fammi semplicemente cambiarlo in byte qui.
E così abbiamo questi tre valori di gamme di byte meno 128 a 127.
Ora lascia che lo cambi in 1 per essere 8.
Ora dice che dà un ferro al compilatore che dice che non può convertirli in morso.
OK.
Quindi e questo è perché questo è un fine e non può essere convertito in byte abbiamo bisogno di un cast esplicito.
E poiché gli intervalli disattivano tutti i byte, stiamo ricevendo questo errore.
Quindi una cosa che possiamo fare è fare un cast qui e questa è una soluzione.
Quindi deve essere nel raggio d'azione.
OK.
Perché se fai il costo, sai che il valore porta Doncaster ad alcuni valori su B dispari compresi tra meno
128 e 1. 7.
Quindi senza questo è fuori dalla portata e dà al compilatore.
OK.
OK, torniamo ai nostri giochi di prestigio.
Così come abbiamo appena visto il compilatore deve conoscere il valore di Casely ma altrimenti non saprà mai
se il valore è compreso nell'intervallo delle espressioni di commutazione.
Tipo a causa di questo.
La seconda restrizione dice che il valore ragionevole deve essere un'espressione costante.
Diamo un'occhiata a questo esempio.
L'esempio è quasi identico al precedente, ma l'unica aggiunta è un mese variabile per raggiungere il valore della prima etichetta del caso,
che è ciò che è noto al momento della compilazione stesso.
Quindi il compilatore sa che il valore è compreso nell'intervallo di byte che è il tipo di
dati dell'espressione switch.
Ma per la seconda etichetta caso viene usata la variabile Montu.
Tuttavia tali variabili vengono valutate solo a runtime e quindi i loro valori non sono noti al momento della compilazione.
Quindi il compilatore non sa se il valore di due fori del mese sarebbe all'interno dell'intervallo del tipo di dati
byte o meno.
Quindi questo fa sì che il codice generi il compilatore.
Quindi la soluzione è quella di usare un'espressione costante e un'espressione costante potrebbe essere una lettera intera o
una stringa letterale.
Il ritorno di Esterne è semplicemente un testo racchiuso tra virgolette e vedremo le stringhe nel prossimo capitolo.
Anche un'espressione costante può essere una variabile costante e una variabile costante è solo una variabile come.
Deve fare ma deve essere dichiarato con una parola chiave chiamata Final e deve anche essere stato inizializzato.
Quindi nel nostro esempio dal lunedì è già inizializzato.
Se ha appena aggiunto la parola chiave finale prima del byte di tipo variabile, allora diventerebbe una variabile costante.
E infine ciò che verrà discusso in seguito.
Ma significa solo che il valore della variabile una volta inizializzato non può mai essere modificato.
Questo è il valore è costante.
OK.
Il valore è finale poiché un valore è costante.
Il compilatore sa se il valore è compreso nell'intervallo delle espressioni di commutazione.
Quindi se il valore è al di fuori dell'intervallo allora darebbe un errore del compilatore.
Si noti che un'espressione costante ha una definizione molto più ampia ma nel contesto
dell'istruzione switch si riduce a interi o stringhe letterali e variabili costanti.
Parliamo di questo esempio nel nostro Cordo OK.
Andiamo avanti e aggiungiamo la nuova variabile.
Montu che è anche il byte inizializza e modifica questo Libman Dumont.
E possiamo vedere che c'è un errore del compilatore su cui le espressioni case devono essere espressioni costanti.
Destra.
Così.
Quindi l'etichetta del caso deve essere un'espressione costante e l'espressione costante, come abbiamo visto in
precedenza, può essere sia un numero intero sia uno strangolatore o all'interno del contesto che non cambia o può essere una variabile costante.
E abbiamo detto che abbiamo bisogno di aggiungere questa parola chiave chiamata Final.
Voglio dire che deve essere inizializzato anche.
Se non è inizializzato, non è in variabile costante.
Ok, allora lo chiamerò anche come costante di tempo di compilazione.
Quindi questo è tutto.
È così ora puoi vedere che non abbiamo più l'errore di compilazione.
Quindi quello che succederà è in fase di compilazione se è un tempo di compilazione se è una variabile
costante, quindi il compilatore sceglierà questo valore per inserirlo qui nel trimestre di byte e visualizzato facendo ciò perché è una costante
di tempo di compilazione.
È una variabile finale che significa che il valore non verrà modificato in una volta inizializzato.
Quindi è un valore finale.
Ok, visto che non cambierà, può solo prendere questo valore.
Scollegalo qui.
Quindi lo collegherà.
OK.
Quindi questo è il vantaggio.
Ma potresti anche dire OK se è così potresti chiedere perché un compilatore fa la stessa cosa perché sa che
è vero.
Allora perché deve dare un errore del compilatore.
Questo perché il valore non è definitivo in questo caso.
Quindi il valore può essere cambiato.
Ora, per esempio, ecco un umed che ottiene una variabile di istanza in modo che sia definita a livello di classe.
Quindi il valore avrebbe potuto essere cambiato.
Diciamo che per una variabile di istanza e che è stata inizializzata, quel valore potrebbe essere stato modificato ovunque
in qualche altro metodo.
Destra.
Quindi il compilatore non ha intenzione di tenere traccia di tutto ciò.
OK.
Quindi è solo troppo complicato per questo.
Quindi questo è il motivo per cui non è un valore finanziario e questo tipo di variabili che non sono definitive vengono valutate solo
in fase di esecuzione.
OK, questa è la cosa.
Quindi deve essere una variabile costante come questa.
Ora non cambierà ora.
Fammi solo capire
questo e non preoccupiamoci anche di questo.
Diciamo solo un esempio volubile Ho ordinato il secondo metodo Suta di esempio.
Devi solo fare Coalson.
È proprio sotto questo metodo.
Unidas Quindi è lo stesso codice che è stato spostato qui.
E qui il parametro è Montu o qui e anche in questo scenario vedi che tutto il resto è lo stesso.
Quindi il secondo mese è qui il secondo mese è il tuo mese qui definito qui Montu anche
se in questo modo darà un errore del compilatore perché è un parametro del metodo.
Qui dici che è un finale ma è ancora un barometro della materia.
Quindi deve essere inizializzato.
Deve essere inizializzato per iniziare.
E quindi solo allora può essere considerato come una variabile costante.
Altrimenti non è una costante scrivibile.
OK.
Quindi questa non è una variabile costante.
Quindi questo è tutto quello che c'è.
E guardiamo anche alle ultime due restrizioni sulle etichette regali.
Uno è che ha bisogno di essere unico, dall'altro come Cascabel costante non può essere conosciuto.
Quindi proviamo anche questo.
M. su questo e riprendiamolo per farne uno qui.
Quindi vengono eseguiti entrambi, quindi abbiamo un compilatore.
Quindi deve essere unico e anche questo può essere nullo.
Guardiano sotto Access.
Non puoi convertire dalla conoscenza al morso.
Quindi questo è un byte e questo non lo è.
Quindi quelle sono le ultime due restrizioni e questo è tutto.
Quindi vai avanti e tu non posso sapere solo il programma e puoi provarlo anche tu.
OK OK.
Grazie.
E torniamo a quelle diapositive.
Ecco un suggerimento utile.
È una buona pratica usare sempre un'istruzione break che è possibile averne una anche
nell'ultimo blocco, in quanto eviterà qualsiasi errore se vengono introdotti nuovi blocchi di casi successivamente la successiva domanda è quindi non
è fattibile utilizzare un'istruzione switch.
L'istruzione switch non può essere utilizzata.
Quindi abbiamo più di una condizione per testare la prossima condizione determinante per testare non è la quantità che
possiamo utilizzare, ma solo se abbiamo bisogno di fare test di uguaglianza.
Questo è importante.
Non può essere usato quando l'espressione commutata è qualcosa di diverso dalla stringa intera o da enim.
Questo è stato già discusso in precedenza.
Infine, un interruttore non può essere utilizzato se almeno una delle chiavi è etichettata. Le restrizioni non si applicano.
Quindi è ovvio.
Quindi per tutti questi casi non possiamo usare una dichiarazione switch su hopital con una dichiarazione if.
Nella prossima lezione vedremo quando un interruttore può essere preferito su un'istruzione if.
Quindi questo è tutto.
E abbiamo analizzato in modo approfondito la dichiarazione dell'interruttore.
Grazie.