2 Stimmen

Wie effizient die Rückgabe einer Zeichenkette in Java ist

Alle Beispielfunktionen, die ich bisher gesehen habe, vermeiden es aus irgendeinem Grund, einen String zurückzugeben. Ich bin ein totaler Rookie, was Java angeht, daher bin ich mir nicht sicher, ob das Absicht ist. Ich weiß, dass zum Beispiel in C++ die Rückgabe eines Verweises auf einen String viel effizienter ist als die Rückgabe einer Kopie dieses Strings.

Wie funktioniert das in Java?

Ich interessiere mich besonders für Java für Android, wo die Ressourcen begrenzter sind als in einer Desktop/Server-Umgebung.

Um diese Frage besser beantworten zu können, stelle ich einen Codeschnipsel zur Verfügung, in dem ich daran interessiert bin, die Zeichenkette (an den Aufrufer) zurückzugeben Seite :

public class TestHttpGet {
    private static final String TAG = "TestHttpGet";

    public void executeHttpGet() throws Exception {
    BufferedReader in = null;
    try {
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet();
        request.setURI(new URI("http://www.google.com/"));
        HttpResponse response = client.execute(request);    // actual HTTP request

        // read entire response into a string object
        in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

        StringBuffer sb = new StringBuffer("");
        String line = "";
        String NL = System.getProperty("line.separator");
        while ((line = in.readLine()) != null) {
            sb.append(line + NL);
        }
        in.close();

        String page = sb.toString();
        Log.v(TAG, page); // instead of System.out.println(page);
        }
    // a 'finally' clause will always be executed, no matter how the program leaves the try clause
    // (whether by falling through the bottom, executing a return, break, or continue, or throwing an exception).
    finally { 
            if (in != null) {
                try {
                    in.close();     // BufferedReader must be closed, also closes underlying HTTP connection
                } 
                catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

In dem obigen Beispiel kann ich einfach definieren:

    public String executeHttpGet() throws Exception {

anstelle von:

    public void executeHttpGet() throws Exception {

und zurück:

        return (page); // Log.v(TAG, page);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X