Errori tipici
public class AssegnazioneChiave
{
public static void main (String[] args)
{
k=50; //errore di compilazione, manca il tipo
int k ="50"; //non posso assgenare una stringa a un intero
String s = 20; // non posso assegnare un intero a una stringa
}
}
Operatori di confronto, booleani e anno bisestile
public class AnnoBisestile
{
public static void main (String[] args)
{
int anno= Integer.parseInt(args[0]);
boolean bBisestile;
bBisestile = anno % 4 == 0;
bBisestile = bBisestile && (anno % 100 != 0);
bBisestile = bBisestile || (anno % 400 == 0);
System.out.println ("L'anno " + anno "e' bisestile?" + bBisestile);
}
}
Classe Math di Java
Da stringhe a valori primitivi
Supponiamo di voler utilizzare l’input di un programma per effettuare dei calcoli (ex. somma)
Come convertiamo da stringa a intero?
public class SommaInteri
{
public static void main (String[] args)
{
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
System.out.print("La somma vale: ");
System.out.println(a+b);
}
}
Da dati primitivi a stringhe
Java definisce l’operatore + sul tipo di dato “built-in” String
- Quando usiamo + con l’elemento almeno un operando String, Java converte automaticamente l’altro operando a String, restituendo una stringa
Conversioni di tipo
Conversione esplicita
Utilizzando un metodo che prende in ingresso un argomento di un tipo e restituisce un valore di un altro tipo Integer.parseInt(), Double.parseDouble(), Math.round(), Math.floor(), Math.ceil() ecc.
Conversione esplicita
Anteponendo il tipo desiderato tra parentesi (int)2.71828 produce un intero di valore 2
Se il tipo di partenza è più preciso (es. double), le informazioni aggiuntive vengono eliminate nel modo più ragionevole (es. da double a int viene eliminata la parte frazionaria)
Cast implicito
Se il tipo di partenza è meno preciso, Java converte automaticamente il valore al tipo più preciso double d = 2;
Warning
La somma di due caratteri dà un intero!
Regole per il cast implicito
Il cast implicito avviene in fase di assegnazione
- byte, short e char possono essere promossi a int int può essere promosso a long float può essere promosso a double
In fase di calcolo di un’espressione
Se uno dei due operandi è double, l’intera espressione è promossa a double. Altrimenti, se uno dei due operandi è float, l’intera espressione è promossa a float
Conversioni di tipo
Phrase-o-matic
- Progettare una classe i cui oggetti contengono tre elenechi di parole l1, l2 e l3
- La classe è in grado di emettere nuove espressioni costruite creando stringhe del tipo “a b c” scegliendo casualmente dai tre rispettivi elenchi , ,
Dichiarazione di un array
Ex. elenchi
- l1={“Salve”, “ciao”, “hello”}
- l2={“egregio”, “eclettico”, “intelligentissimo”}
- l3={“studente”, “ragazzo”, “giovane”}
Ex. output
- “salve egregio giovane”
- “ciao eclettico studente”