repsak >> ved ikke om du kan appende på den måde - i hvert fald (hvis det virker), så er den møg-u-effektiv, da du hele tiden oprettet et nyt StringObjekt ... Hvis man ved, at man har en String, som der løbende skal ændres/tilføjes noget til, så bør man bruge StringBuffer...
riversen >> det kan jeg jo egenligt godt se nu :-)) .. men det afholder mig dog ikke fra at sige, at "String=String+String"-appending er en resource-sluger i forhold til en StringBuffer :-)
men int'en bliver også konveret til en string et eller andet sted, men hvordan det foregår har jeg ikke tjekket nærmere. Så vigtigt er det vist heller ikke :-)
toString( int, 10 ) kalder toString( int ) hvis radix er 10 (hvilket den jo er :-)
Og den kode er en værre mobbedreng :
public static String toString(int i) { int q, r, charPos; charPos = 12 ; char buf [] = new char [charPos] ; char sign = 0 ;
if (i == Integer.MIN_VALUE) { return "-2147483648"; } if (i < 0) { sign = '-' ; i = -i ; }
// Generate two digits per iteration while ( i >= 65536 ) { q = i / 100 ; // really: r = i - (q * 100) ; r = i - ((q << 6) + (q << 5) + (q << 2)) ; i = q ; buf [--charPos] = DigitOnes [r] ; buf [--charPos] = DigitTens [r] ; }
// Fall thru to fast mode for smaller numbers // assert(i <= 65536, i); for (;;) { q = (i * 52429) >>> (16+3) ; r = i - ((q << 3) + (q << 1)) ; // r = i-(q*10) ... buf [--charPos] = digits [r] ; i = q ; if (i == 0) break ; } if (sign != 0) { buf [--charPos] = sign ; }
// Use the back-door private constructor -- we abandon the // char []. This requires that we drop the "private" from the // java.lang.String: String (int Offset,int Count,char[] // Value) constructor.
jakoba >> jeg må indrømme at jeg ikke ved det --- for i modsætning til f.eks. C++ , hvor man kan gå ind og "se/ændre kode for '+'-operatoren, så ved jeg ikke hvordan Java, rent kodemæssigt, gør det
Hvad jeg ved er, at det så bliver StringBuffer.append( String ) som bliver kaldt
Hvad der sker i kaldene/processen fra ""+int til String ved jeg ikke -
Man kunne forestille sig, at den først opretter strengen "" og derefter bruger concat metoden til at føje int'en på - men det er ren spekulation
/Søren
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.