Java - hogyan kell konvertálni int -ból string
A szokásos módszerek: Integer.toString (i) vagy String.valueOf (i).
A Java speciális támogatást nyújt a kezelő + számára, ha stringeket használ (lásd a dokumentációt), ami azt a kódot jelenti, amelybe elküldte:
fordítási idő alatt. Ez kissé kevésbé hatékony (a sb.append () végződik az Integer.getChars () meghívásával, de minden esetben Integer.toString ()) lenne, de működik.
Üres sztring hozzáadása:
Integer hozzáadása:
Az utolsó sor kivonatolása:
javaslatot és folyamatban levő munkát a JDK 9 céljaira.
vezet, hogy a húrok i-ből fordulnak futásidőben. A String kifejezés általános típusa. i először egy Integer objektumra (új Integer (i)) konvertálódik, majd a String.valueOf (objektum obj) nevet kapja. Így ez egyenértékű
Nyilvánvaló, hogy ez egy kicsit kevésbé hatékony, mint a String.valueOf (új Integer (i)) hívása. amely ugyanazt az eredményt adja.
Ezt a technikát az egyetemi szinten tanították, kezdve a Java osztályral, amelyet tíz évvel ezelőtt vettem át. Meg kell azonban jegyeznem, hogy az IIRC-ben még nem kaptuk meg a String és Integer osztályok módszereit.
A technika egyszerű és gyors. Ha mindent megteszek, valamit nyomtatni fogok (pl. System.out.println ("" + i);). Úgy gondolom azonban, hogy ez nem a legjobb módja annak, hogy megtérjenek, mert gondolkodni fog, hogy gondolkodjanak el, mi történik, amikor ilyen módon használják. Továbbá, ha a teljesítmény probléma, lassúbbnak tűnik (részletesebben, mint más válaszokban).
Csak a mosolyok :) Megírták az osztályokat, hogy teszteljek három módszert: "+ i, Integer.toString és String.ValueOf. Mindegyik teszt a sztringekből 1-től 10 000-ig konvertált. Ezután öt alkalommal futottam az egyes Linux parancsokat. Az Integer.toString () valamivel gyorsabb, mint a String.valueOf () egyszer, háromszor van kötve, és a String.valueOf () egyszer gyorsabb; A különbség azonban nem haladta meg a több milliszekundumot.
Technika «+ i» lassabb volt, mint az egyes vizsgálati, egy kivételével, amikor ő volt 1 ms gyorsabb Integer.toString (), és 1 ms lassabb String.valueOf () (nyilván, ugyanazt a tesztet, ahol a String. ValueOf () gyorsabb, mint az Integer.toString ()). Bár általában csak néhány ezredmásodperc lassabb volt, volt egy teszt, ahol körülbelül 50 milliszekundum lassabb volt. YMMV.
Ne felejtsd el fontolni a JIT-t - az első néhány konverzió sokkal lassabb lesz, és torzítja az időzítést. Az én MacBook-on a kapcsolat megakadályozza
20n hosszabb, mint a másik két módszer (mindkettő
Személy szerint úgy gondolom, hogy a "+" valóban úgy néz ki, mint a poszter eredeti kérdése "büdös". A Java mellett sok OO nyelvet használtam. Ha ez a szintaxis megfelelő volt, akkor a Java egyszerűen értelmezni i, anélkül, hogy a „” akarata átalakítani, hogy egy húr, és csinálni, mert a rendeltetési hely típusától egyértelmű, és csak egy érték van megadva a jobb oldalon. Más hasonló „trükk” becsapni a fordító, rossz mojo, ha figyelembe vesszük a különböző változatok javac, más gyártók által készített, vagy más platformokon, ha a kód elveszett kell port fenébe, azt kell, hogy sok más OOL csak vegye typecast: .. (string) i wink
Tekintettel a tanulási módszereimre és arra, hogy milyen egyszerűen értelmezhető egy ilyen konstrukció a kód gyors olvasása során, az Integer.toString (i) módszerre szavazok. Elfelejti, ns vagy két, hogyan hajtja végre a Java dolog a háttérben, és String.valueOf (i), ez a módszer úgy tűnik számomra, hitelesen és pontosan megmutatja, hogy mi történik: Van és egész, és azt akarom, hogy átalakítható vonalon.
Jó pont, tett egy-két alkalommal, talán, csak használja StringBuilder előtt - egy jó válasz létrehozását sornyi szöveget és ints vagy egyéb tárgyak, mivel ez lesz használva a háttérben egyébként?
Csak az én két centem dobott már jól fizetett cica válaszaira az ember kérdéseire. mosoly
NÉHÁNY REFLECTIONS TÁJÉKOZTATÁSÁRÓL: