Ein String in einen anderen String "übergeben"

Crusha

Mitglied
Hi, ich bräuchte mal vielleicht "simple" Hilfe.

Ich möchte eine Datenbankverbindung zu einer Mysql Datenbank herstellen und das klappt auch wunderbar, aber ich möchte dies bisschen "schöner" programmieren das dies später dynamisch funktionieren soll.
Mein Problem ist, ich würde gerne wie unten steht alles einzeln und separat an einen String übergeben und diese Daten in "db url" übergeben, aber leider finde ich keine Lösung wie ich das bewerkstelligen könnte. Mit PHP ginge das wunderbar einfach, aber funktioniert diese Variante funktioniert bei Java nicht :oops: :)

String ip = "XXX";
String port = "3306";
Strink db_name = "test_db";

String url = "jdbc:mysql://ip:port/db_name?";
 

Crusha

Mitglied
Sorry, aber hilft mir echt nicht weiter wie ich 3 Strings in einen anderen String hineinbekomme indem dort noch ein ":" "/" und "?" enthalten sind.

Java:
String ip = "XXX";
String port = "3306";
Strink db_name = "test_db";

String url = "jdbc:mysql://ip:port/db_name?" +ip +port +db_name;
???
 

kaoZ

Top Contributor
Code:
StringBuilder
+
Code:
append(String s);
 
Zuletzt bearbeitet:

Joose

Top Contributor
Sorry, aber hilft mir echt nicht weiter wie ich 3 Strings in einen anderen String hineinbekomme indem dort noch ein ":" "/" und "?" enthalten sind.

Java:
String ip = "XXX";
String port = "3306";
Strink db_name = "test_db";

String url = "jdbc:mysql://ip:port/db_name?" +ip +port +db_name;
???

:bahnhof: was ist an meinem Beispiel nicht zu verstehen?
Ich versuche es nochmal ausführlicher

Java:
String ip = "wunderwuzzi";
String port = "zahl";
String db = "datenherkunft";

String url = "jdbc:mysql://" + wunderwuzzi + zahl + "/" + datenherkunft;

Mehrere Strings kann man mit
Code:
+
verknüpfen.
 
Zuletzt bearbeitet:

BlueHamster

Neues Mitglied
Generell sollte man Strings nicht mit + verbinden.
Da Strings unveränderbar sind, wird mit jedem + ein neuer String erzeugt!


Dafür gibt es wie oben schon erwähnt wurde die Klasse StringBuilder.

Java:
StringBuilder stringBuilder= new StringBuilder();
stringBuilder.append("Hallo").append(" ").append(":)").....;
 

kaoZ

Top Contributor
Wie BlueHamster schon beschrieben hat, wenn du per + Operator einen String verkettest steht dort eigentlich

Java:
String s = "Hallo" + " " + "Welt";

// daraus resultiert :

String s = new String("Hallo").concat(new String(" ").concat(new String("Welt")))

Wie du siehst werden hier 3 uveränderliche (immutable) Objekte erzeugt und per
Code:
.concat();
aneinandergereiht, dies ergibt dann deine neues String Objekt
 
Zuletzt bearbeitet:

fischefr

Aktives Mitglied
Ich glaube, ihr habt die Frage falsch verstanden. Ich denke das Problem ist nicht die einfache Stringkonkenation, sondern die Maskierung. In Skriptsprachen heißt die gesuchte Funktion meinstens urlencode oder ähnlich.

Ich verweise mal an die api an der Stelle:
URLEncoder (Java 2 Platform SE 5.0)

Den zu übergebenden String zunächst an die Methode übergeben und den Rückgabewert dann in die jdbc-url einbetten.

Ich benutze immer ganz gerne für solche Dinge die Klasse Stringbuilder:

StringBuilder (Java Platform SE 7 )
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
Noch jemand der StringBuilder benutzt, weil er vor 100 Jahren im Internet gelesen hat, dass es angeblich performanter als eine Zeichenketten-Konkatenation (<- tolles Wort) sein soll? :bloed: Ich bin mal so "provokant" und lass die Lösung unbeantwortet, evtl. gehen ein paar Leuten die Lichter auf.
 

kaoZ

Top Contributor
Ich finde es kommt immer auf die Situation an, erzeuge ich in einem loop einen bestimmten string nutze ich gern einen StringBuilder, für normale Bearbeitung reicht eine Verkettung per + / concat (); vollkommen aus, was der Performance angeht wird es denke ich, Wenn es auf Heutigen System überhaupt noch eine Rolle spielen sollte, dermaßen gering sein, dass es wahrscheinlich nichtmal messbar ist.
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
Es geht mir darum, dass + kein concat() ist. Nur in sehr sehr seltenten Fällen.

Code:
String s = "Hallo" + " " + "Welt";

optimiert der Compiler zu:

Code:
String s = "Hallo Welt";

In diesem speziellen Beispiel wäre der StringBuilder mit append sogar langsamer! Seien wir ehrlich, sowas kommt auch nie vor. Häufiger trifft man diesen Fall an:

Java:
String s0 = "schöne";
String s1 = " neue";
String s2 = "Hallo " + s0 + s1 + " Welt";

Dazu sagt der Compiler:

Java:
String s0 = "sch\366ne";
String s1 = " neue";
String s2 = (new StringBuilder()).append("Hallo ").append(s0).append(s1).append(" Welt").toString();

Okey, das ist einen "tick" langsamer. In diesem Fall steht die Lesbarkeit / Wartbarkeit noch deutlich über der Performance. Nun was passiert, wenn es komplizierter wird?

Java:
String s4 = "13543";
for(int i = 0; i < 100; i++) {
        s4 = "0" + s4;
}

Dazu sagt der Compiler:

Java:
String s4 = "13543";
for(int i = 0; i < 100; i++)
        s4 = (new StringBuilder()).append("0").append(s4).toString();

Ich gebe zu, das sieht sehr verdächtig unperformant aus. Es gibt aber immer noch den JIT-Compiler, der dieses Statement retten könnte. Jetzt müsste man noch prüfen, ob das der Fall ist und ab welchen i optimiert wird.
 
Zuletzt bearbeitet:

fischefr

Aktives Mitglied
@Ruzmanz hast du die Weisheit mit Löffeln gefressen, oder warum trittst du hier so arrogant auf?

Ich seh das so ähnlich wie koaZ.
Zum einen gibt es nicht DEN compiler, sondern verschiedene mit verschiedenen Ausprägungen was automatische Optimierung betrifft. Zum anderen kann es bei vielen aufeinander folgenden Stringkonkatenationen nicht schaden, diese explizit auszuführen. Den Blödsinn, viele hardkodierte Strings mit + zu verknüpfen meine ich damit ausdrücklich nicht.
Zum anderen kann es aber doch auch nicht schaden, einen Anfänger darauf hin zu weisen, dass es noch etwas anderes gibt als das klassische +.
 

kaoZ

Top Contributor
Es geht mir darum, dass + kein concat() ist. Nur in sehr sehr seltenten Fällen.


Du hast recht, mein Fehler , so schaut die ein Auszug aus der JavaDoc aus :

Java:
 * The Java language provides special support for the string
 * concatenation operator (&nbsp;+&nbsp;), and for conversion of
 * other objects to strings. String concatenation is implemented
 * through the {@code StringBuilder}(or {@code StringBuffer})
 * class and its {@code append} method.

Hier die dazu gehörenden Konstruktoren

Java:
 public String(StringBuffer buffer) {
        synchronized(buffer) {
            this.value = Arrays.copyOf(buffer.getValue(), buffer.length());
        }
    }

 public String(StringBuilder builder) {
        this.value = Arrays.copyOf(builder.getValue(), builder.length());
    }

Hier noch einmal concat(); , dies nutzt ein char Array zur realisierung

Java:
  public String concat(String str) {
        int otherLen = str.length();
        if (otherLen == 0) {
            return this;
        }
        int len = value.length;
        char buf[] = Arrays.copyOf(value, len + otherLen);
        str.getChars(buf, len);
        return new String(buf, true);
    }

Allerdings ist es wie schon gesagt meiner Meinung nach immer Situationsabhängig, grade wenn die String Konstrukte sehr unübersichtlich und komplex werden vermeide ich es eher dieser per + operator zu konkatenieren , und nutze lieber die Möglichkeit des StringBuilders , grade weil ich auch so die Möglichkeit besitze den String zu manipulieren, und sei es nur ihn rückwärts ausgeben zu lassen ;)
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
@Ruzmanz hast du die Weisheit mit Löffeln gefressen, oder warum trittst du hier so arrogant auf?

Ich seh das so ähnlich wie koaZ.
Zum einen gibt es nicht DEN compiler, sondern verschiedene mit verschiedenen Ausprägungen was automatische Optimierung betrifft. Zum anderen kann es bei vielen aufeinander folgenden Stringkonkatenationen nicht schaden, diese explizit auszuführen. Den Blödsinn, viele hardkodierte Strings mit + zu verknüpfen meine ich damit ausdrücklich nicht.
Zum anderen kann es aber doch auch nicht schaden, einen Anfänger darauf hin zu weisen, dass es noch etwas anderes gibt als das klassische +.

Es geht mir darum, dass man den StringBuilder als Selbstverständlichkeit betrachtet, obwohl die Compiler ab min. Java 5 bereits ein
Code:
+
zu einem
Code:
StringBuilder
wandeln. Das Argument, dass es noch andere Compiler gibt, lasse ich nicht gelten. Ganz objektiv betrachtet, macht es keinen Sinn den Compiler so zu programmieren, dass man ein
Code:
+
durch die Methode
Code:
concat()
ersetzt, wenn der Aufwand für die Implementierung von
Code:
Stringbuilder->append()
exakt so groß ist. Zudem sind einzelne bzw. sporadische Aufrufe uninteressant. Erst bei Schleifen lohnt es sich zu explizit optimieren. Und genau diese Informationen wurden dem Anfänger nicht vermittelt, sodass es in 5 Jahren die Leute immer noch nicht besser machen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Datei öffnen und String durch einen anderen String ersetzen. Java Basics - Anfänger-Themen 15
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
N Wie kann ich einen String wieder zusammensetzen und ausgeben lassen? Java Basics - Anfänger-Themen 9
T Fehlermeldung beim Versuch, einen String einzulesen Java Basics - Anfänger-Themen 4
J Wie kann ich z.B. einem int-Wert einen String-Wert zuweisen? Java Basics - Anfänger-Themen 2
J Mit for Schleife einen String Rückwärts befüllen Java Basics - Anfänger-Themen 9
J Aufruf einer Methode über einen String Java Basics - Anfänger-Themen 11
S Das Anführungszeichen(") Zeichen in einen String setzen Java Basics - Anfänger-Themen 1
P Einen String mittig zeichnen? Java Basics - Anfänger-Themen 1
J Erste Schritte Wie kann ich einen String in eine If einbauen :)? Java Basics - Anfänger-Themen 12
OlafHD Einen String an eine Klasse übergeben Java Basics - Anfänger-Themen 2
Silvascus Inhalt eines externen Textdokuments an einen String übergeben Java Basics - Anfänger-Themen 2
E Was ergibt trim() auf einen leeren String Java Basics - Anfänger-Themen 3
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
A Wie kann man einen zufälligen String aus einem StringArray auswählen? Java Basics - Anfänger-Themen 6
A Variablen Übergeben des Inhalts einer Variable in einen String Java Basics - Anfänger-Themen 17
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
D Datentypen Ein Integer Feld in einen String wandeln ohne Nullenunterdrückung Java Basics - Anfänger-Themen 6
W Buttons sollen bei Mausklick einen String schreiben Java Basics - Anfänger-Themen 11
M Quelltext auslesen und diesen in einen String schreiben Java Basics - Anfänger-Themen 3
B Aus Text Zeile einen String herauslesen Java Basics - Anfänger-Themen 11
W In einen String schreiben Java Basics - Anfänger-Themen 9
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
S Einen neuen String ohne Array oder List erzeugen??? Java Basics - Anfänger-Themen 13
W elemente eines arrays in einen string schreiben Java Basics - Anfänger-Themen 3
L mit "assert" einen String prüfen Java Basics - Anfänger-Themen 5
J String soll einen Zahlenwert ausgeben? Java Basics - Anfänger-Themen 9
eXistenZ wert von einem String auf einen Integer ändern =( Java Basics - Anfänger-Themen 6
B Datentypen Char Array in einen String verwandeln? Java Basics - Anfänger-Themen 2
B Listeinträge in einen String schreiben Java Basics - Anfänger-Themen 4
Z Wie Byte[] in einen String oder int konvertieren Java Basics - Anfänger-Themen 2
R einen gegebenen String in einem String suchen Java Basics - Anfänger-Themen 6
S Prüfen, ob ein String einen Bindestrich enthält Java Basics - Anfänger-Themen 3
S BBCodes in einen String setzen Java Basics - Anfänger-Themen 7
Antoras Einen zufälligen String auswählen Java Basics - Anfänger-Themen 5
K Wie zerlege Ich einen String zum Rechnen? Java Basics - Anfänger-Themen 3
E Einen String auch über die Laufzeit hinaus speichern Java Basics - Anfänger-Themen 4
M Variablenbezeichner in einen String umwandeln Java Basics - Anfänger-Themen 4
P Methode um einen String zu überprüfen Java Basics - Anfänger-Themen 12
I Server / Client Programm wie einen String übergeben? Java Basics - Anfänger-Themen 6
N Aus Textdatei jede Zeile in einen String lesen Java Basics - Anfänger-Themen 22
A Einen String in einen Variablentyp verwandeln Java Basics - Anfänger-Themen 22
N Wie caste ich ein Object in einen String? Java Basics - Anfänger-Themen 7
M Wie ersetzt man einen String mit eckigen Klammern Java Basics - Anfänger-Themen 5
T StackTrace in einen String speichern Java Basics - Anfänger-Themen 3
halla Character-Array in einen String umwandeln Java Basics - Anfänger-Themen 3
F Leerzeichen in einen String einfügen. Java Basics - Anfänger-Themen 15
J Lesen einer Datei in einen String oder Char? Java Basics - Anfänger-Themen 3
T In einer HashMap einen String löschen Java Basics - Anfänger-Themen 20
G Ein int zu in einen String umwandeln? Java Basics - Anfänger-Themen 9
S Einen langen String beim Leerzeichen in zwei Strings zerlege Java Basics - Anfänger-Themen 3
N an einen String[] hinten einen String hinzufügen Java Basics - Anfänger-Themen 8
G einen int-wert als String ausgeben Java Basics - Anfänger-Themen 4
C Hex-String ind einen byte[] umwandeln? Java Basics - Anfänger-Themen 6
D String in einen primitiven datentypen parsen Java Basics - Anfänger-Themen 3
T Color aus einen String Java Basics - Anfänger-Themen 5
G Elemente in einem String-Array in einen String umwandeln Java Basics - Anfänger-Themen 2
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
N String überprüfen Java Basics - Anfänger-Themen 3
E String zerlegen aus args Java Basics - Anfänger-Themen 1
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
J String Filter Java Basics - Anfänger-Themen 5
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D 2D Char Array into String Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
I Zerlegen von String Java Basics - Anfänger-Themen 3
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
I String Java Basics - Anfänger-Themen 4
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben