Prima lezione
Tipi di dato di base (o primitivi)
I tipi di dati sono built-in
- Sono predefiniti nel linguaggio
Un tipo di dati è un insieme di valori e di operazioni definite su tali valori
- Intero
- Reali
- Booleani
- Caratteri
- Stringa (anche se non è propriamente primitivo)
Notazione operazioni booleane
- and →&&
- or → ||
- not →!
// Esempio operatori booleani
A && B
A || B
A ! B
Tipi di built-in
- Int (dim 4 byte)
- Double (dim 8 byte)
- Long (dim 8 byte)
- Float (dim 4 byte)
- Boolean (dim 1 byte)
- Char (dim 2 byte)
- Short (dim 2 byte)
- Byte (dim 1 byte)
Variabili, dichiarazioni e assegnazioni
Una variabile è un nome usato per riferirsi a un valore di un tipo di dati
- Una variabile è creata mediante dichiarazione
int contatore;
- Il valore viene assegnato a una variabile mediante un’assegnazione
contatore=0
- Un’istruzione può includere una dichiarazione e un’assegnazione allo stesso tempo
int contatore=0
Rispetto a python
- In java siamo costretti a specificare il tipo della variabile
- Questo tipo non può più cambiare (è statico)
- Tuttavia esistono alcuni elementi di dinamicità
Warning
- Non posso utilizzare una variabile senza prima dichiararla NO:
a = "stringa"
;,SI:String a = "stringa";
- Non posso assegnare a una variabile tipi incompatibili tra loro NO:
int a = "stringa";
NO:String a = 50;
SI:String a = "stringa";
Variabili e identificatori
Il nome assegnato a una variabile è detto identificatore, ovvero una sequenza di lettere, cifre, _ e $ la prima delle quali non è una cifra
- Gli identificatori sono case-sensitive non possono essere utilizzate alcune parole riservate (es. public, static, int, double, ecc.) si utilizza la notazione a cammello (Camel case)
- Camel case: una variabile ha la prima parola con la prima lettera minuscola e la seconda parola ha la lettera maiuscola (ex.
unaVariabile
,myInteger
)
- Camel case: una variabile ha la prima parola con la prima lettera minuscola e la seconda parola ha la lettera maiuscola (ex.
- Le variabili devono avere un nome sensato
Assegnazione e inizializzazione
Ci troviamo all’interno di un metodo per esempio:
// esempio
int a, b;
a = 5;
b = a+10;
int c = a+b;
a = a-b;
Letterali
E’ una rappresentazione a livello do codice sorgente del valore di un tipi di dati
- 27 o -32 sono letterali per gli interi
- 3.14 è un letterale per i double
- true o false sono gli unici due letterali per il tipo booleano
- “Ciao, mondo” è un letterale per il tipo String
Distinguere tra costanti intere e in virgola mobile
Interi
- Le costanti di tipo int sono semplicemente numeri interi nell’intervallo
- [-2, +2] miliardi circa
- Le costanti di tipo long vengono specificate con il suffisso l o L (ex. 10000000000000000L)
Numeri in virgola mobile
- Le costanti di tipo double sono semplicemente numeri con la virgola (punto)
- Le costanti di tipo float hanno il suffisso f o F (ex. 10.5F)
Info
- In tutti i casi si può utilizzare il trattino basso _ per separare le cifre (ex. 100_000 per indicare 1000000, 1_234 per indicare 1234)
- Si può ottenere un intero da una rappresentazione binaria anteponento 0b alla stringa binaria (ex. 0b101 vale 5))
Espressioni
Un’espressione è un letterale, una variabile o una sequenza di operazioni du letterali e/o variabili che producono un valore
Assegnazione di un’espressione alla variabile
Supponiamo di voler effettuare l’assegnazione:
c = a*2+b
- Calcola il valore dell’espressione destra (5*2+15)
- Assegna il valore (25) alla variabile di destinazione (c)
Precedenza operatori
- Moltiplicazione, divisione, resto
- Addizione, sottrazione
Caratteri e stringhe
Char
- E’ un carattere alfanumerico o un simbolo
- Ci sono 216 possibili valori di caratteri (più eventuali “caratteri supplementari”, per esempio per il cinese)
- Codifica Unicode basata su interi a 16 bit
- Racchiusi da apici (es. ‘a’, ‘b’, ‘0’, ‘1’, ecc.)
- Caratteri di escape
- Tab →
\t
- A capo:
\n
- Backslash:
\\
- Apice: `’
- Virgolette:
\"
- Tab →
Stringhe
- E’ una sequenza di caratteri
Operatori booleani
- Ha solo due valori possibili:
true
(vero) efalse
(falso) - Gli operatori disponibili sono
&&
(and),||
(or) e!
(not)
Operatori di confronto
Definiti sui tipi numerici primitivi
- Producono un valore booleano
Operatori di confronto
- Uguaglianza → ==
- Diversità → !=
- Minore → <
- Maggiore → >
- Minore uguale → ⇐
- Maggiore uguale → >=
Operatori
Post-incremento e post-decremento
int a;
a = 3;
int c = a++;
//a vale 4 e c vale 3
Pre-incremento e pre-decremento
int a;
a = 3;
int c = ++a;
//a vale 4 e c vale 4
Print() in Java
HelloWorld.java
public class HelloWorld //dichirazione di una classe
{
public static void main (String [] args)
//main è il nome del metodo, String [] args sono gli argomenti
{
System.out.print("Hello, World!");
System.out.println();
}
}
- Public, class, static, void sono parole chiave
- Il metodo Java risiede in un file che ha lo stesso nome della classe creata (HelloWorld) più l’estensione .java (HelloWorld.java)
Ricevere un input in fase di esecuzione e generare un output
public class BotSempliceSemplice
{
public static void main (String[] args)
{
System.out.print("Ciao");
System.out.print(args[0]); // args[0] è la prima parola in input
System.out.print(". Come va?");
}
}
- Compila: javac BotSempliceSemplice.java
- Esegui: java BotSempliceSemplice Pippo
- Output: Ciao, Pippo. Come va?
Abbiamo implementato un programma che prende in input una stringa e ne restituisce in output un’altra
Regole di stile nella scrittura del codice
Posso scrivere così?
public class
HelloWorldAnarchico{
public static void main (String [] args)
{
System.out.print("Hello, World!");
System.out.println();
}
}