La differenza fra il mio suggerimento e l'operatore usato da Angelo stà nel fatto che, da quello che avevi scritto tu, facevi un test per verificare se la data immessa era sbagliata (logica negativa). In questo caso dovresti controllare se il numero del mese è inferiore a 1 OPPURE (||) maggiore di 31.
Angelo ha adottato una soluzione differente (una logica positiva): lui controlla se la data inserita è corretta: così lui controlla se il numero del mese è compreso fra 1 e 31 (ossia, se è SIA MAGGIORE di 1, SIA MINORE di 31: &&).
La differenza fra gli operatori (&& e &) e (|| e |) è una semplice differenza di fuzionamento: i primi effettuano un confronto booleano sui termini, mentre gli altri si usano per operazioni BIT a BIT.
I primi si usano per costruire espressioni booleane, mentre i secondi vengono usati per cambiare i valori di alcuni bit (in un numero, ad esempio) o per conoscere il valore di particolari bit.
Esempio:
questo codice ritorna il valore del bit meno significativo del numero che gli è fornito come parametro.
codice:
public int bitMenoSignificativo(int valore) {
return (valore & 1);
}
FUNZIONAMENTO: (gli interi in Java sono a 32 bit, ma supponiamo siano a 8)
prende la rappresentazione binaria del numero e la mette in AND con 1.
Ricordo che un AND da 1 se entrambi gli operandi sono 1, altrimenti dà 0:
valore = 7 --> 00000111
00000111 AND
00000001
--------
00000001
Spero di essere stato sufficientemente chiaro.
Ciao.