Java afferma

Java afferma
L'affermazione in Java è un'affermazione basata sulla parola riservata, affermare, avere un'espressione booleana e terminare con un punto e virgola. Succede che alcune condizioni in un programma possano impedirgli di funzionare correttamente. L'istruzione Assert controlla se tali condizioni esistono in un programma.

L'affermazione dovrebbe essere utilizzata in un programma in cui il programmatore sospetta che tale condizione possa esistere. Se viene utilizzata l'istruzione Assert e la condizione non si verifica erroneamente, il programma continuerà senza alcun problema. Se la condizione si verifica erroneamente, viene riportato un messaggio di errore. Tale controllo prevede un'espressione booleana. Naturalmente, la codifica dell'asserzione non deve necessariamente coinvolgere la parola riservata. Ci sono molti buoni programmi che fanno codifica dell'asserzione senza la parola riservata. Tuttavia, l'utilizzo della parola riservata emette una particolare funzione nella programmazione, rendendo il programma più costruttivo.

Considera il seguente segmento di codice:

Intero in = null;
Se (in != null)
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni
altro
Sistema.fuori.println ("test non riuscito.");

Attualmente, il valore di "in" è nullo, ma può essere qualsiasi numero intero. L'If-Bock verrà eseguito se non è nullo, il che dovrebbe essere considerato buono. Se è null (falso), verrà eseguita la parte altro dell'istruzione IF-COMPOUND, segnalando il problema.

Ora, un'istruzione Assert può sostituire la maggior parte dell'istruzione IF-COMPOUND. Questo è un uso classico dell'istruzione Assert. Un altro uso classico è verificare se il limite del risultato di un calcolo non è stato raggiunto, come presenta la seguente descrizione:

La velocità di un oggetto in movimento è data da,

s = d/t

dove d è la distanza, t è il tempo impiegato e s è il risultato (velocità). Si può desiderare che la velocità dell'oggetto rimanga al di sotto della velocità del suono e quindi non causa onde d'urto. In questo caso, l'istruzione Assert può essere utilizzata per affermare che la velocità è al di sotto della velocità del suono, che è 343 m/s.

Un codice del programma per questo problema, senza la dichiarazione di asserzione, può essere il seguente:

doppia d = 15, t = 3, s;
s = d / t;
Se (s < 343)
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni
altro
Sistema.fuori.println ("test non riuscito.");

Sintassi dell'asserzione in Java

In Java, le sintassi dell'asserzione sono in due forme. Sono:

asserire espressione1;
E
Assert Expression1: espressione2;

Per la prima opzione (istruzione), espressione1 è un'espressione booleana. Nota: uguale a, in un'espressione booleana è ==, perché, nel calcolo, = significa assegnazione mentre == significa uguaglianza. Per la seconda opzione (istruzione), Expression1 è ancora un'espressione booleana; ma espressione2 si traduce in un valore, che può o meno essere booleano (vero o falso). Tuttavia, il valore non deve essere nullo. Lo scopo di espressione2 è per la messaggistica dell'errore al programmatore o all'utente. In questa seconda opzione, il colon separa le due espressioni. Il colon non si applica alla prima opzione.

O Dichiarazione di asserzione alla fine significa vero o falso a causa dell'espressione booleana. Se è vero, il programma continua come previsto. Se è falso, allora l'errore dovrebbe essere riportato.

Affermare l'espressione1
Convalida

Il codice di esempio per la convalida sopra, viene ripetuto qui per un riferimento rapido (visivo):

Intero in = null;
Se (in != null)
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni
altro
Sistema.fuori.println ("test non riuscito.");

"Assert Expression1" può essere utilizzato per questo codice come segue:

Intero in = null;
affermare != null;
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni

Se l'affermazione è abilitata per il programma e se l'asserzione afferma a False, come per questa particolare codifica, le dichiarazioni sotto la dichiarazione Assert non saranno eseguite; e la macchina virtuale Java (OS) emetterà un messaggio di errore. Se l'affermazione non è abilitata per il programma, verranno eseguite le dichiarazioni sotto la dichiarazione Assert, nonostante siano false. Scopri come abilitare l'asserzione per un programma di seguito.

Per questa codifica assert, il programmatore consente a JVM di affrontare interamente la messaggistica degli errori a causa dell'assenza di espressione2.

Prevenire la portata del limite

Il codice di esempio per impedire il limite sopra, viene ripetuto qui per un riferimento rapido (visivo):

doppia d = 15, t = 3, s;
s = d / t;
Se (s < 343)
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni
altro
Sistema.fuori.println ("test non riuscito.");

"Assert Expression1" può essere utilizzato per questo codice come segue:

doppia d = 15, t = 3, s;
s = d / t;
Affermare s < 343;
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni

Se l'asserzione è abilitata per il programma, quindi per questa particolare codifica, verranno eseguite le dichiarazioni sotto l'istruzione Assert e la macchina virtuale Java (OS) non emetterà un messaggio di errore; Poiché il risultato di 5 è inferiore a 343. Se l'affermazione non è abilitata, le dichiarazioni sotto l'istruzione Assert verranno comunque eseguite perché saranno ignorate anche se è falsa. Scopri come abilitare l'asserzione per un programma di seguito.

Per questa codifica assert, il programmatore consente ancora alla JVM di gestire completamente i messaggi di errore; a causa dell'assenza di espressione2.

Espressione2
Convalida

Il codice di esempio per la convalida sopra, viene ripetuto qui per un riferimento rapido (visivo):

Intero in = null;
Se (in != null)
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni
altro
Sistema.fuori.println ("test non riuscito.");

Expression2 è per il report di errori. La parte else di questa istruzione IF-COMPOUND, è per la reporting degli errori. Un uso corrispondente dell'istruzione Assert di seconda opzione, per questa codifica, può essere il seguente:

Intero in = null;
affermare != null: in;
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni

Se l'affermazione è abilitata per il programma, quindi per questa particolare codifica, le dichiarazioni sotto l'istruzione Assert non verranno eseguite e la macchina virtuale Java (OS) emetterà un messaggio di errore. Questa volta, il messaggio di errore utilizzerà il valore della variabile, in. Se l'affermazione non è abilitata, verranno eseguite le dichiarazioni sotto la dichiarazione Assert, nonostante il fatto che l'istruzione Assert si traduca in False. Scopri come abilitare l'asserzione per un programma di seguito.

Per questa codifica assert, il programmatore influenza il JVM nella sua tratta di messaggi di errore a causa della presenza di espressione2 (in) - vedere i dettagli di seguito.

Prevenire la portata del limite

Il codice di esempio per impedire il limite sopra, viene ripetuto qui per un riferimento rapido (visivo):

doppia d = 15, t = 3, s;
s = d / t;
Se (s < 343)
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni
altro
Sistema.fuori.println ("test non riuscito.");

Expression2 è per il report di errori. La parte else di questa istruzione IF-COMPOUND, è per la reporting degli errori. Un uso corrispondente dell'istruzione Assert di seconda opzione, per questa codifica, può essere il seguente:

doppia d = 15, t = 3, s;
s = d / t;
Affermare s < 343 : s;
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni

Se l'asserzione è abilitata per il programma, quindi per questa particolare codifica, verranno eseguite le dichiarazioni sotto l'istruzione Assert e la macchina virtuale Java (OS) non emetterà un messaggio di errore; Poiché il risultato di 5 è inferiore a 343. Se il risultato (valore) di S è uguale o superiore a 343, il messaggio di errore comporta il valore di S. Se l'affermazione non è abilitata, le dichiarazioni sotto l'istruzione Assert verranno comunque eseguite perché verranno ignorate anche se si traducono in falso. Scopri come abilitare l'asserzione per un programma di seguito.

Per questa codifica assert, il programmatore influenza il JVM nella sua tratta di messaggi di errore a causa di Expression2 - Vedi i dettagli di seguito.

Abilitazione dell'affermazione

Se un programma ha una codifica di asserzione, la dichiarazione Assert sarà efficace per rispettare la dichiarazione di asserzione se il programma è abilitato. Abilitare la dichiarazione di asserzione viene eseguita dopo che il programma Java è stato compilato su bytecode. Questo viene fatto nella riga di comando durante l'esecuzione del programma. Viene fatto includendo l'interruttore -nableASSERTIONS. Con gli interruttori sulla riga di comando, il - non significa "togliere"; È un trattino (proiettile).

L'uso dello switch funziona solo per l'esecuzione del programma. Se lo switch non viene utilizzato, la prossima volta che viene chiamato il programma, l'esecuzione ignorerà l'istruzione Assert.

In questa sezione, verrà affrontato solo il codice per la convalida. Il codice di convalida con l'istruzione Assert Opzione First è:

Intero in = null;
affermare != null;
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni

Supponiamo che questo sia nel metodo principale () della classe e del file principale, chiamato Theclass. Il file verrà normalmente compilato con il comando:

javac theclass.Giava

La compilazione dovrebbe passare con successo. Con lo switch, il programma bytecode risultante, TheClass.classe, verrà quindi eseguito alla riga di comando con,

Java -EnableAssertions theclass

Il rapporto (output) sarà:

Eccezione nel thread "Main" Java.Lang.Assertionerror
a Theclass.Main (TheClass.Java: 6)

Si noti che non vi è alcuna menzione del valore, null, per la variabile, "in" all'output. Con questo, le dichiarazioni sotto la dichiarazione Assert nel programma non vengono eseguite.

Il codice di convalida con l'istruzione Assert di seconda opzione, che ha ": in" è:

Intero in = null;
affermare != null: in;
Sistema.fuori.println ("fallo.");
// Altre dichiarazioni

Supponiamo che questo sia nel metodo principale () della classe e del file principale, chiamato Theclass. Il file verrà compilato con il comando:

javac theclass.Giava

La compilazione dovrebbe passare con successo. Con lo switch, il programma bytecode risultante, TheClass.classe, verrà eseguito alla riga di comando con,

Java -EnableAssertions theclass

Il rapporto (output) sarà:

Eccezione nel thread "Main" Java.Lang.Assertionerror: null
a Theclass.Main (TheClass.Java: 6)

Si noti che si menziona il valore, null, per la variabile, "in" all'output, come ": null" nella prima linea di output. Con questo, le dichiarazioni sotto la dichiarazione Assert nel programma non sono ancora eseguite a causa dell'abilitazione di qualsiasi dichiarazione di Assert nel programma. Se lo switch, -EnableAssertions, viene omesso nella riga di comando, qualsiasi (o tutte) affermazioni di asserzione nel programma verrà ignorato. Il codice seguente verrà comunque eseguito, anche se le dichiarazioni di assert (espressioni booleane) sono false.

Conclusione

L'affermazione in Java è un'affermazione basata sulla parola riservata, affermare, avere un'espressione booleana e terminare con un punto e virgola. Succede che alcune condizioni in un programma possano impedirgli di funzionare correttamente. L'istruzione Assert controlla se tali condizioni esistono in un programma.

Buoni esempi per l'uso dell'istruzione Assert sono in convalida e per verificare se il risultato di un calcolo non attraversa un limite. Esistono due forme dell'istruzione Assert: una che non aiuta nel messaggio di errore e l'altro che assiste nel messaggio di errore. Un'affermazione in Java è abilitata nella riga di comando, per il bytecode compilato, con l'interruttore, -EnableASSERTIONS.