11/11/01Classe String 1 La classe String Come usare le stringhe.

Slides:



Advertisements
Presentazioni simili
File Linguaggio C.
Advertisements

Introduzione al linguaggio C++
LINGUAGGIO DI PROGRAMMAZIONE C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Università di camerino
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
Programmazione Ingegneria TLC
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Caratteri e stringhe di caratteri
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico, variabili, tipi primitivi, assegnamento a variabile.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Scomposizione di stringhe
Funzioni di Libreria per le stringhe DICHIARAZIONI CONTENUTE NEL FILE: char *strcpy( char *dest, const char *sorg ); Copia sorg in dest, incluso il carattere.
Oggetti e dati primitivi
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
I File.
Le funzioni.
Java base I: Sintassi e tipi di dati
Programmazione in Java
Programmazione in Java Claudia Raibulet
Programmazione in Java Claudia Raibulet
Tipi di dati elementari
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Introduzione a Javascript
Vettori (a una dimensione)
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Programmazione in Java
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
Liste Concatenate 11 Aprile E’ una delle strutture dati fondamentali in tutti i linguaggi di programmazione di alto livello Una Lista Concatenata.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Fondamenti di informatica T-A Esercitazione 5 : Stringhe ed array AA 2012/2013 Tutor : Domenico Di Carlo.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
Fondamenti di informatica T-A Esercitazione 3 : Classi, metodi, visibilità, metodi statici AA 2012/2013 Tutor : Domenico Di Carlo.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
1 Input / Output Spesso un programma deve acquisire dati da una sorgente esterna o inviare informazioni a una destinazione esterna. L’informazione può.
13/08/02Tipi base 1 Tipi interi Operatori numerici Tipi float Caratteri Tipo booleano.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
6/11/01Ordinamento 1 Un esempio di algoritmi: ordinamento.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
Stringhe in Java. Definire una stringa. Definire una stringa in Java Il modo più semplice e diretto per creare un oggetto di tipo String è assegnare alla.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

11/11/01Classe String 1 La classe String Come usare le stringhe

11/11/01 Classe String2 La classe String La classe String, sebbene non sia un tipo base, ne presenta diverse caratteristiche In particolare in Java le stringhe hanno le seguenti caratteristiche: 1.String è una classe, e quindi le stringhe sono oggetti e non variabili 2.Esiste una speciale notazione (caratteri tra doppi apici) per le costanti stringa, che rappresenta in realtà una abbreviazione per creare un oggetto stringa il cui contenuto sia noto a priori 3.Le stringhe sono gli unici oggetti che dispongono dell’operatore + (e +=) che permette la concatenazione 4.Il contenuto di un oggetto String non può mai essere modificato 5.Esiste un’altra classe, StringBuffer, che permette di modificare il contenuto di una stringa (usata dal compilatore nelle espressioni di tipo stringa) 6.Una stringa vuota (ma inizializzata) e una stringa nulla (non inizializzata) non sono la stessa cosa

11/11/01 Classe String3 Stringa nulla e stringa vuota 1.public class TestString { public static void main( String args[] ) { String s1 = "", s2 = null; 6. System.out.println(s1.length()); 7. System.out.println(s2.length()); 8. } } 0 Exception in thread "main" java.lang.NullPointerException at TestString.main(TestString.java:7) 0 Exception in thread "main" java.lang.NullPointerException at TestString.main(TestString.java:7) Si noti che si può anche scrivere: 1.System.out.println(“ciao”.length()); 4 4 Una String non è un vettore: si può conoscere la lunghezza di una stringa per mezzo del metodo length() (si notino le parentesi)

11/11/01 Classe String4 L’operatore + 1.public class TestString { public static void main( String args[] ) { String s; 6. s = "ciao"; 7. s += " mondo"; 8. System.out.println(s); 9. } } ciao mondo

11/11/01 Classe String5 String e StringBuffer Cosa accade effettivamente: s“ciao” Viene calcolata l’espressione “ciao” + “ mondo” Il compilatore in realtà usa StringBuffer Il risultato viene quindi riconvertito a String s“ciao mondo” s memorizza un riferimento diverso: la stringa “ciao” è ancora in memoria e non è stata modificata, probabilmente non è nemmeno più utilizzabile int l = s.length()+” mondo”.length; StringBuffer tmp = new StringBuffer(l) tmp.append(s) tmp.append(“ mondo”); s = new String(tmp);

11/11/01 Classe String6 Creazione di una stringa String() crea una stringa vuota String(String value) crea una copia della stringa String(char[] value) crea una stringa da un vettore di caratteri String(char[] value, int offset, int count) crea una stringa da una porzione di un vettore di caratteri String(byte[] value) crea una stringa da un vettore di byte String(byte[] value, int offset, int count) crea una stringa da una porzione di un vettore di byte String(StringBuffer) crea una stringa da uno StringBuffer …

11/11/01 Classe String7 Costruttori di String 1.public class StringConstructors { 2. public static void main( String args[] ) 3. { 4. char charArray[] = { 'b','i','r','t','h',' ','d','a','y' }; 5. byte byteArray[] = { (byte) 'n', (byte) 'e', (byte) 'w', 6. (byte) ' ', (byte) 'y', (byte) 'e', 7. (byte) 'a', (byte) 'r' }; String s1 = new String( "hello" ), s[] = new String[8]; 10. StringBuffer buffer = new StringBuffer( "Welcome" ); // uso dei costruttori della classe String 13. s[1] = new String(); 14. s[2] = new String( s1 ); 15. s[3] = new String( charArray ); 16. s[4] = new String( charArray, 6, 3 ); 17. s[5] = new String( byteArray, 4, 4 ); 18. s[6] = new String( byteArray ); 19. s[7] = new String( buffer ); for(int i=0; i<s.length; i++) 22. System.out.println("s[" + i + “]=" + s[i] + "!"); 23. } 24.} 25./* (C) Copyright 1999 by Deitel & Associates, Inc. and Prentice Hall. */ s[0]=null! s[1]=! s[2]=hello! s[3]=birth day! s[4]=day! s[5]=year! s[6]=new year! s[7]=Welcome! s[0]=null! s[1]=! s[2]=hello! s[3]=birth day! s[4]=day! s[5]=year! s[6]=new year! s[7]=Welcome!

11/11/01 Classe String8 Confronto di stringhe Tutti i caratteri sono rappresentati da codici numerici Quando i computer confrontano stringhe, confrontano i codici numerici Le lettere maiuscole sono perciò diverse dalle lettere minuscole Metodi per il confronto s1.equals( "Ciao" ) Restituisce true se s1 è uguale a "Ciao" s1.equalsIgnoreCase( otherString ) Restituisce true se s1 è uguale a otherString “ciao" è uguale a "CIAO", ma anche a "CiAo“ s1.compareTo( otherString ) restituisce 0 se le due stringhe sono uguali un valore negativo se s1 è minore di otherString un valore positivo se s1 è maggiore di otherString

11/11/01 Classe String9 Confronto di stringhe operatore == Restituisce true se due riferimenti puntano alla stessa locazione di memoria Si noti che Java utilizza un solo riferimento di memoria anche per stringhe costanti introdotte in momenti diversi s1 = "hello"; s2 = new String( "hello" ); s1 == "hello"; //true s2 == "hello"; //false

11/11/01 Classe String10 Ricerca di stringhe intindexOf(int ch) Restituisce l’indice della prima occorrenza del carattere ch, -1 se non presentenella stringa che invoca il metodo intindexOf(int ch, int fromIndex) Come sopra, ma la ricerca parte dall’indice fromIndex int indexOf(String str) indexOf(String str, int fromIndex) Come sopra, ma viene ricercata una stringa, non un singolo carattere int lastIndexOf(int ch) lastIndexOf(int ch, fromIndex) lastIndexOf(String str) lastIndexOf(String str, fromIndex) Restituisce l’indice dell’ultima occorrenza, -1 se non presente. boolean startsWith(String prefisso) endsWith(String suffisso) Verifica che la stringa inizia/termina con il prefisso/suffisso specificato Metodi di ricerca

11/11/01 Classe String11 Ricerca di stringhe 1.public class TestString { public static void main( String args[] ) { 4. String s = "ippopotamo"; 5. System.out.println(s.indexOf("po")); 6. System.out.println("ippopotamo".indexOf("po", 3)); 7. System.out.println(s.indexOf("up")); 8. } }

11/11/01 Classe String12 Estrazione di stringhe charcharAt(int index) Restituisce il carattere posto all’indice index Stringsubstring(int inizio, int fine) Estrae la stringa dal carattere di indice inizio a fine escluso Stringsubstring(int inizio) Estrae il suffisso della stringa dal carattere di indice inizio Stringtrim() Elimina i whitespace all’inizio e alla fine della stringa Metodi di estrazione 1.public class TestString { public static void main( String args[] ) { 4. System.out.println("ippopotamo".substring(3,5)); 5. System.out.println( 6. "ippopotamo".substring(3,5).charAt(0)); 7. } 8.} op o op o I metodi possono essere concatenati fra loro

11/11/01 Classe String13 Eliminazione di doppi spazi 1.public class TestString { public static void main( String args[] ) { 4. String s="A bc def ghi"; 5. System.out.println(s); 6. for(int start=0; (start=s.indexOf(" ", start))>=0;) { 7. System.out.println(start); 8. s = s.substring(0, start) + s.substring(start+1); 9. } 10. System.out.println(s); 11. } } Non ho operazioni di fine ciclo Creo una nuova stringa eliminando il carattere di indice start A bc def ghi 4 8 A bc def ghi 4 8 A bc def ghi Start viene aggiornato ad ogni iterazione

11/11/01 Classe String14 Altri metodi public String toLowerCase() ritorna una nuova stringa con i caratteri tutti minuscoli public String toUpperCase() ritorna una nuova stringa con i caratteri tutti maiuscoli … Ed altri ancora Provare a sostituire in un testo un nome (senza distinguere tra maiuscole e minuscole) con lo stesso nome che abbia solo la prima lettera maiuscola Esempio: MARIO, mario, MaRiO  Mario

11/11/01 Classe String15 Un semplice esempio di lettura 1./** 2. Il programma legge un file (di al più 1000 byte) 3. e lo memorizza nella stringa s uso: java TestLettura < "nomefile" 6. */ 7.import java.io.*; 8. 9.public class TestLettura { public static void main( String args[] ) throws IOException { 12. byte[] v = new byte[1000]; 13. // legge dal file fino ad un massimo di 1000 byte 14. // restituisce il numero di byte effettivamente letti 15. int length = System.in.read(v); 16. //System.out.println("length="+length); 17. //crea una stringa con i primi length byte del vettore v 18. String s = new String(v, 0, length); 19. System.out.println(s); 20. } }

11/11/01 Classe String16 Formattazione di numeri Formattatori numerici: metodi NumberFormat getInstance() restituisce una istanza di formattazione standard void setMaximumIntegerDigits(int num) numero massimo di cifre intere void setMinimumIntegerDigits(int num) numero minimo di cifre intere void setMaximumFractionDigits(int num) numero massimo di cifre decimali void setMinimumFractionDigits(int num) numero minimo di cifre decimali void setMinimumFractionDigits(int num) numero minimo di cifre decimali String format(long num) restituisce un intero formattato String format(double num) restituisce un numero con decimali formattato …

11/11/01 Classe String17 Formattazione di numeri 1.import java.text.*; 2.Import java.util.Locale; 3. 4.public class TestFormat { 5. 6.public static void main(String[] args) { 7. // I numeri vengono formattati con le convenzioni italiane 8. NumberFormat nf = NumberFormat.getInstance(Locale.ITALIAN); 9. double d=1.0/3.0; 10. System.out.println(d); 11. System.out.println(nf.format(d)); 12. System.out.println(nf.format(d*10000)); 13. nf.setMaximumFractionDigits(2); 14. System.out.println(nf.format(d)); 15. System.out.println(nf.format(0.3)); 16. nf.setMinimumFractionDigits(3); 17. System.out.println(nf.format(0.3)); 18. nf.setMinimumIntegerDigits(3); 19. System.out.println(nf.format(0.3)); 20. nf.setMinimumFractionDigits(0); 21. System.out.println(nf.format(1)); 22. } 23.} , ,333 0,33 0,3 0, , , ,333 0,33 0,3 0, ,

11/11/01 Classe String18 Formattazione di numeri 1.import java.text.*; 2. 3.public class TestFormat { 4. 5.public static void main(String[] args) { 6. DecimalFormat nf = new DecimalFormat("0.00#"); 7. System.out.println(nf.format(0.3)); 8. System.out.println(nf.format(-0.3)); 9. System.out.println(nf.format(10000/3.0)); 10. } 11.} DecimalFormat(String formato) crea un formattatore secondo una stringa modello: 0 – la cifra deve essere presente # - la cifra può essere presente … … …

11/11/01 Classe String19 Formattazione di numeri 1.public class TestFormat { 2. 3.public static void main(String[] args) { 4. System.out.println(format(-0.25, 4, 3)); 5. System.out.println(format(-1.25, 4, 0)); 6.} 7. 8.static String format(double val, int intDigit, int fracDigit) { 9. String ris = String.valueOf(val); 10. String prefix, suffix; 11. int point = ris.indexOf('.'), i; 12. if(point<0) { 13. prefix = ris; 14. suffix = ""; 15. } else { 16. prefix = ris.substring(0, point); 17. suffix = ris.substring(point+1); 18. } 19. for(i=prefix.length(); i<intDigit; i++) prefix = ' '+prefix; 20. for(i=suffix.length(); i<fracDigit; i++) suffix += '0'; 21. if(fracDigit>0) return prefix+'.'+suffix.substring(0, fracDigit); 22. else return prefix; 23.} 24.} È un metodo statico di String che restituisce una rappresentazione in stringa del parametro