Newsgroup: it.comp.java
Titolo: consigli

Salve vorrei chiedere 3 consigli:
1) che differenza c'è tra:
String c = "ciao";
String c = new String("ciao");
e quando è corretto usare una sintassi e quando l'altra
2) Perchè le seguenti istruzioni danno risultati differenti????
String c= new String();
System.out.println(c);      -----> mi stampa vuoto
mentre
String c[]= new String[1];
System.out.println(c[0]);  ----> mi stampa null
3) La seguente istruzione permette di formattare un numero "i" in una
stringa "iStr"secondo la convezione Italiana. I vari passi a partire
da sinistra a destra, ossia format(i)....
getIstance(Locale.ITALY).fomat(i)  non mi sono chiarissimi.??!!??
String iStr=NumberFormat.getInstance(Locale.ITALY).format(i);

 String iStr=NumberFormat.getInstance(Locale.ITALY).format(i);
Consulta javadoc:
http://java.sun.com/j2se/1.4.2/docs/api/java/text/NumberFormat.html#format(double)
Ciao

 String iStr=NumberFormat.getInstance(Locale.ITALY).format(i);
NumberFormat non ha costruttori pubblici, perche' si vuole
espressamente che tu ottenga oggetti di tipo NumberFormat attraverso
la chiamata a uno specifico metodo.
nel caso di NumberFormat il metodo si chiama getInstance ed e' un
metodo statico, cioe' che va chiamato sulla classe e non sull
'oggetto.
NumberFormat nf = NumberFormat.getInstance((Locale.ITALY);
dopodiche'si chiama il metodo format sul tuo oggetto
String iStr = nf.format(100000);
Ora visto che NumberFormat.getInstance((Locale.ITALY) ti ritorna un
oggetto di tipo NumberFormat, dire
NumberFormat nf = NumberFormat.getInstance((Locale.ITALY);
String iStr = nf.format(100000);
oppure
String iStr = NumberFormat.getInstance((Locale.ITALY).format(100000);
e' esattamente la stessa cosa.
Mi permetto un consiglio: misembri proprio alle prime armi con Java,
se continui ad andare cosi' a tentativi ti aspettano "pena e stridore
di denti" ...Comprati un bel testo di introduzione, come Core Java o
Beginning Java, ti semplifichera' di molto la vita e imparerai in
maniera seria.
(Oppure vieni a uno dei mie corsi ;)

 (Oppure vieni a uno dei mie corsi ;)
Piuttosto che andare avanti a tentativi mi sembrano tanto problemi di un 
qualche test di un corso ;-)
Andrea

allora mi potreste consigliare un buon libro, preferibilmente in
ITALIANO!!!

Libri non te ne so consigliare,
ma ti SCONSIGLIO i classici mattoni,
tipo le guide complete della mc-graw-hill!
prenditi un libro semplice, che ti dia le basi..
poi per approfondire usi la documentazione ufficiale :-)

 String x2 = new string ("ciao"),
C'è anche un altra differenza (oltre alla differente dichiarazione
sintattica)...
Quando inizializzi una stringa come x1 la JVM carica il risultato in
un suo pool riservato che è in grado di ottimizzare l'utilizzo della
memoria ogni volta che una stringa viene inizializzate in questo modo.
mentre se fai come per x2 utilizza lo spazio condiviso anche dagli
altri oggetti inizializzati nel modo analogo
Sembrerà strano ma quello che scrivo qua sotto è corretto (io quando
l'ho visto credevo di avere la JVM impazzita....)
esempio
String x1 = "ciao";
String x2 = new string ("ciao"),
String x3 = "ciao";
System.out.println(x1 == x2); // restituirà false
System.out.println(x1 == x2); // restituirà true
System.out.println(x1.equals(x2)); // restituirà true
Ciao Marco

Chiedo scusa per l'errore di digitazione...
Qua sotto c'è l'esempio corretto
String x1 = "ciao";
String x2 = new string ("ciao"),
String x3 = "ciao";
System.out.println(x1 == x2); // restituirà false
System.out.println(x1 == x3); // restituirà true


 ITALIANO!!!
HORSTMANN CAY S.-CORNELL GARY
CORE JAVA 2
VOLUME 1 & 2
Occhio a prendere l ultima edizione, che tratti almeno java 5 ( o 1.5
che dir si voglia).
Questo e' in italiano, ma te ne perdi molti altri che non sono
tradotti.
Se non impari a leggere libri e documentazione in inglese ti sara'
sempre duro rimanere aggiornato e migliorare le tue abilita'....

usa il pool ogni volta che c'č uno String "literal"