Newsgroup: it.comp.java
Titolo: string va bene per un testo lungo?

devo inserire in una variabile un testo molto lungo: quale č la variabile
piů adatta? string?
Grazie in anticipo, Mario.

 Grazie in anticipo, Mario.
String.length() restituisce un int.
Un int puň essere 2**31 - 1, quindi...
Ciao.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Un int puň essere 2**31 - 1, quindi...
class StringLength2 {
   public static void main(String[]args){
     int len = 1;
     for(int i=1; true; i++)
       try {
         len *= 2;
         System.out.print("i="+i+" len="+len+" ");
         byte[] b = new byte[len];
         System.out.print("b.length="+b.length+" ");
         String s = new String(b, "UTF-8");
         System.out.println("s.length()="+s.length());
       } catch(Throwable t) {
         System.out.println("t="+t);
         return;
       }
   }
}
stampa:
i=1 len=2 b.length=2 s.length()=2
i=2 len=4 b.length=4 s.length()=4
i=3 len=8 b.length=8 s.length()=8
i=4 len=16 b.length=16 s.length()=16
i=5 len=32 b.length=32 s.length()=32
i=6 len=64 b.length=64 s.length()=64
i=7 len=128 b.length=128 s.length()=128
i=8 len=256 b.length=256 s.length()=256
i=9 len=512 b.length=512 s.length()=512
i=10 len=1024 b.length=1024 s.length()=1024
i=11 len=2048 b.length=2048 s.length()=2048
i=12 len=4096 b.length=4096 s.length()=4096
i=13 len=8192 b.length=8192 s.length()=8192
i=14 len=16384 b.length=16384 s.length()=16384
i=15 len=32768 b.length=32768 s.length()=32768
i=16 len=65536 b.length=65536 s.length()=65536
i=17 len=131072 b.length=131072 s.length()=131072
i=18 len=262144 b.length=262144 s.length()=262144
i=19 len=524288 b.length=524288 s.length()=524288
i=20 len=1048576 b.length=1048576 s.length()=1048576
i=21 len=2097152 b.length=2097152 s.length()=2097152
i=22 len=4194304 b.length=4194304 s.length()=4194304
i=23 len=8388608 b.length=8388608 s.length()=8388608
i=24 len=16777216 b.length=16777216 t=java.lang.OutOfMemoryError
Direi che 2^23 bytes siano + che sufficienti...
- Dario

 
Io utilizzerei un vettore/list di stringhe.
Hai magari un lieve spreco in più di memoria ed una lieve perdita di
performance ma nel caso in cui tu abbia problemi di OutOfMemory, puoi
cominciare a gestire facilmente la paginazione del testo.
ah, naturalemente ogni elemento del vettore corrisponde ad una riga di testo
Ciao D.
Inviato da 
www.mynewsgate.net

 Direi che 2^23 bytes siano + che sufficienti...
Beh anche senza provare 2^32 byte sono 4GB... non so te ma io ho meno
memoria virtuale ;)
Ciao
Matteo
-- 
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it

 Un int puň essere 2**31 - 1, quindi...
Se devi fare manipolazioni (tipo append, substring, etc...) secondo me ti
conviene lo StringBuffer
Le String sono classi speciali allocate in una particolare area della JVM,
che ora non ricordo, e che vengono rigenerate ad ogni operazione di
modifica...correggetemi se sbaglio!
-- 
ShadowMan

 modifica...correggetemi se sbaglio!
Bellissime queste dritte! dove le hai imparate?
Su qualche libro sulla VM di java?
In effetti capire non soltanto cosa fanno ma come lo fanno è importante!
Colgo l'occasione per ringraziare tutti coloro che hanno letto e/o che hanno
risposto alle mie richieste.
Mario.

 ha scritto nel messaggio
news:An6tc.10791$
G%.6877@tornado.fastwebnet.it

Se vuoi approfondire meglio...
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html
http://www.churchillobjects.com/c/11027.html
ciao
-- 
ShadowMan