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”