Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per...

24
Java e i Tipi di dati primitivi Parte 3

Transcript of Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per...

Page 1: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Java e i Tipi di dati primitivi

Parte 3

Page 2: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

La nozione di tipo di datoLa nozione di tipo di dato

Il tipo del dato consente di esprimere la natura del dato

Indica il modo con cui verrà interpretata la sequenza di bit che rappresenta il dato

La stessa sequenza può rappresentare un intero o un carattere adesempio

Determina il campo dei valori che un dato può assumere

Specifica le operazioni possibili sui dati

Page 3: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Tipi di dati e JavaTipi di dati e Java

Java è un linguaggio fortemente tipizzato

Il tipo di ogni variabile o espressione può essere identificato leggendo il programma ed è già noto al momento della compilazione

È obbligatorio dichiarare il tipo di una variabile prima di utilizzarla

Dopo la dichiarazione non è possibile assegnare alla variabile valori di tipo diverso

Page 4: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Tipi di datoTipi di dato

Ogni tipo di dato ha:

Un nome int, double, charUn insieme di valori letterali possibili 3, 3.1, ‘c’Un insieme di operazioni lecite + *In Java ci sono:

Tipi sempliciTipi di oggetti o riferimenti a oggetti

Page 5: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Tipi di dati primitivi sempliciTipi di dati primitivi semplici

Tipi di dati primitivi (8) per rappresentare:

numeri interi byte, short, int, longnumeri decimali in virgola mobile float, doublei caratteri chari valori booleani boolean

Page 6: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Tipi di dati primitivi numericiTipi di dati primitivi numerici

La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria

E quindi nel valore che possono rappresentare:

Tipo

byteshort

intlong

floatdouble

Tipo

byteshort

intlong

floatdouble

Memoriain byte

1248

48

Memoriain byte

1248

48

Valore min

-128-32,768-2,147,483,648< -9 x 1018

+/- 3.4 x 1038 con 7 cifre significative+/- 1.7 x 10308 con 15 cifre significative

Valore min

-128-32,768-2,147,483,648< -9 x 1018

+/- 3.4 x 1038 con 7 cifre significative+/- 1.7 x 10308 con 15 cifre significative

Valore max

12732,7672,147,483,647> 9 x 1018

Valore max

12732,7672,147,483,647> 9 x 1018

Page 7: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Operatori sui tipi aritmeticiOperatori sui tipi aritmetici

10 % 3 = 1Resto%

10 / 3 = 3Divisione/

7000 * 3 =21000Moltiplicazione*

657 – 57 = 600Sottrazione-

45 + 5 = 50Somma+byte, short, int,

long

9.6e01 / 2e01 = 4.8e00Divisione/

7e03 * 3.0e00 = 2.1e04Moltiplicazione*

6.57e02 – 5.7e01 = 6.00e02Sottrazione-

4.50e01 + 5.30e00 = 5.03e01Somma+float, double

esempioOperazionesimbolotipo

Page 8: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

La rappresentazione dei caratteri

Page 9: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Il tipo booleanIl tipo boolean

Un valore boolean rappresenta una condizione di verità o falsità

Una variabile di tipo boolean può rappresentare un valore a due stati

come un interrutore che è acceso o spento

Le parole riservate true e false sono gli unici valori ammessi per il tipo boolean

boolean eseguito = false;

Page 10: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Espressioni aritmeticheEspressioni aritmetiche

Una espressione è una combinazione di operatori e operandi

Una espressione aritmetica calcola valori numerici e usa operatori aritmetici:

somma +sottrazione -moltiplicazione *divisione /resto %

somma +sottrazione -moltiplicazione *divisione /resto %

Se uno o entrambi glioperandi di un operatore sono di tipo virgola mobile, il risultato è di tipo virgola mobile

Se uno o entrambi glioperandi di un operatore sono di tipo virgola mobile, il risultato è di tipo virgola mobile

Page 11: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Divisione e restoDivisione e resto

Se entrambi gli operandi dell’operatore / sono interi, il risultato è intero e la parte decimale è persa

L’operatore resto % riporta il resto della divisione

Esempio Divisione.java, dopo aver visto la classe keyboard

14 / 3 uguale a 414 / 3 uguale a 4

8 / 12 uguale a 08 / 12 uguale a 0

14 % 3 uguale a 214 % 3 uguale a 2

8 % 12 uguale a 88 % 12 uguale a 8

Page 12: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Precedenza tra operatoriPrecedenza tra operatori

Gli operatori possono venire combinati in espressioni complesserisultato = totale + cont / max - scarto;

Gli operatori hanno una precedenza ben definita implicita che determina l’ordine con cui vengono valutati

Moltiplicazione, divisione e resto sono valutati prima di somma,sottrazione e concatenazione tra stringhe

Gli operatori che hanno la stessa precedenza sono valutati da sinistra a destra

Mediante le parentesi si può alterare l’ordine di precedenza

Page 13: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Precedenza tra operatoriPrecedenza tra operatori

Ordine di valutazione dell’espressione:

a + b + c + d + e a + b * c - d / e1 2 3 4 3 1 4 2

a / (b + c) - d % e2 1 4 3

a / (b * (c + (d - e)))4 3 2 1

Page 14: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Operatore di assegnamentoOperatore di assegnamento

Ha la precedenza più bassa di qualunque altro operatore

Prima si valuta l’espressione alla destra dell’operatore =

risposta = somma / 4 + MAX * altro;4 1 3 2

Poi il risultato è assegnato alla variabile alla sinistra

Page 15: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Assegnamento, ancoraAssegnamento, ancora

I membri di destra e sinistra dell’operatore = (assegnamento) possono contenere la stessa variabile

dapprima, si aggiunge 1 al valore origanario della variabile

numero = numero + 1;numero = numero + 1;

Poi il risultato è immagazzinato come nuove valore della variabile(il vecchio valore è sovrascritto)

Page 16: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Assegnamento in variabili di riferimentoAssegnamento in variabili di riferimento

Si consideri l’assegnamento x = y;

Se x e y sono variabili di tipo semplice, il risultato dell’istruzione sarà che il contenuto di y viene copiato come contenuto di x

Se x e y sono variabili di tipo oggetto e contengono il riferimento all’oggetto allora conseguenza dell’istruzione è che il riferimento di y viene copiato come contenuto di x

x e y riferiscono ora allo stesso oggetto

In entrambi i casi il contenuto della variabile y non cambia

Page 17: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Librerie di classiLibrerie di classi

Una libreria è una collezione di classi che possono essere usate nei programmi

La standard library fa parte di ogni sistema di sviluppo Java

Queste classi NON fanno parte del linguaggio, ma vengono usate continuamente

La classe System e la classe String sono parte della libreria di classi standard di Java

Altre librerie possono essere prodotte da terze parti o sviluppate da voi stessi

Page 18: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

PackagesPackages

Le classi della libreria standard sono organizzate in pacchetti

Package

java.langjava.appletjava.awtjavax.swingjava.netjava.utiljava.textjava.math

Package

java.langjava.appletjava.awtjavax.swingjava.netjava.utiljava.textjava.math

Scopo

supporto generale allo sviluppoimportato automaticamente

creare applets per il webgrafica e interfacce graficheulteriori componenti grafiche per GUIcomunicazione di reteutilità varievisualizzare testo formattatoeseguire calcoli

Scopo

supporto generale allo sviluppoimportato automaticamente

creare applets per il webgrafica e interfacce graficheulteriori componenti grafiche per GUIcomunicazione di reteutilità varievisualizzare testo formattatoeseguire calcoli

Page 19: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Dichiarazione di importDichiarazione di import

Per usare una classe di un pacchetto, si indica il suo nome per esteso

java.util.Random;

O si importa la classe e quindi si indica solo il nome della classe

import java.util.Random;

Per importare tutte le classi di un pacchetto si usa il carattere ‘jolly’ *

import java.util.*;

Page 20: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Metodi statici di classeMetodi statici di classe

Alcuni metodi possono essere invocati tramite la classe, invece che tramite un oggetto della classe

Sono i metodi di classe o metodi statici

La classe Math contiene molti metodi statici, che eseguono diverse funzioni matematiche

Il valore assoluto, funzioni trigonometriche, radici quadrate, etc.

temp = Math.cos(90) + Math.sqrt(delta);

Page 21: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

La classe KeyboardLa classe Keyboard

La classe Keyboard non fa parte della libreria di classi standard di Java

E’ fornita per leggere facilmente l’input da tastiera

Esempi Echo.java e Quadratic.java

Page 22: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

AppletsApplets

Una applicazione Java è un programma stand-alone con un metodo main

Un applet è un programma Java che si intende trasferire su web ed eseguire tramite un browser

La classe che definisce un applet non ha un metodo main

Un applet può anche essere eseguito mediante lo strumentoappletviewer di Java SDK

La classe che definisce un applet estende la classe Applet

In questo usa il meccanismo della ereditarietà, un concetto orientato agli oggetti che si vedrà meglio in seguito

Page 23: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Applets - 2Applets - 2

Un applet può fornire metodi per diverse funzioni

Ad esempio, il metodo paint che richiede come argomento un oggetto della classe Graphics è automaticamente eseguito per disegnare

Un oggetto Graphics definisce un contesto grafico in cui si possono disegnare forme e testi

La classe Graphics offre diversi metodi per disegnare e colorare diverse forme

Page 24: Oggetti e dati primitivi di dati primitivi numerici La differenza tra i diversi tipi di dato per rappresentare numeri consiste nella occupazione di memoria E quindi nel valore che

Applets - 3Applets - 3

Un applet è immerso in un file HTML file usando uno specialetag che faccia riferimento al file bytecode della classe applet

In effetti è il formato bytecode del programma che viene trasferito sulla rete

L’applet viene eseguito dall’interprete Java che è parte del browser