2016-05-03 35 views
18

Tutulma durumunda benim için hiçbir şey geri gelmiyor, bu beklenen davranış mı?StringBuilder.toString() çok büyük olduğunda Eclipse konsolunda boş bir dize olarak yazdırılır?

StringBuilder sb = new StringBuilder(""); 
for(int i = 0; i < 256*256*2*6; i++) { 
    sb.append("a"); 
} 
System.out.println(sb.toString()); 

kod hatasız döner ve boyut Maximum number of characters stringbuilder can accommodate

çözüldü aksine bellek kapasitesi withhin iyi: Sorun sağlayan Tutulma konsola yatıyor ve (Pencere -> Tercihler -> Çalıştır/Debug -> Konsol -> sabit genişlik konsolu) çizgiyi normal olarak yazdıracaktır.

+3

Hayır, soruların bir hatası var, benimki henüz normal bitti ama hiçbir şey vermiyor. Ayrıca benim numaram neredeyse büyük değil ve hala int + 8 + 8 + 1 + 3 = 20 bit uzunluk. – HopefullyHelpful

+3

mükemmel çalışır sadece burada kontrol edin> https://ideone.com/nE6vEB –

cevap

31

Sorun, muhtemelen konsolunuzun böyle uzun bir dize yazdırılamamasıdır. Eğer denerseniz:

System.out.println(sb.toString().length()); 

yerine, it will print what you expect (786432).

+1

Tutuklama arabellek yeterince büyük olsa bile, tutulma denedim gerçekten işe yaramıyor. _line_ uzunluğuna daha çok benziyor, çünkü 'a' yerine 'a \ n' eklendiğinde, tüm içeriği benim durumumda gösterecektir. – Berger

+0

@Berger * Limit Konsol Çıktısı * Eclipse'de (Pencere -> Tercihler -> Çalıştır/Hata Ayıkla -> Konsolu) işaretlenmemiş mi? Btw, 'System.out.println' için max, 'Integer.MAX_VALUE' (2,147,483,647)' e eşit değilse, bu bir dizinin tutabileceği maksimum değerdir ve bir String bir chardır []. –

+0

@Kevin Cruijssen: Sınırı devre dışı bıraktım, ancak dev çizgi görünmedi. – Berger