tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
1103
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mcdroemmel mcdroemmel ist offline Mitglied Bronze
    Registriert seit
    Mar 2009
    Beiträge
    26
    Hallo zusammen,

    ich bin da zufällig auf ein ganz grundlegendes und merkwürdiges Phänomen bei der Verwendung des Forward(Vorwärts)-Slash in einem Java-String gestoßen.
    Will man einen Backslash in Strings verwenden muss man den escapen, ist mir klar.
    Mit einem Forward-Slash war mir das nicht bekannt.

    Folgendes kleines Testschnipsel:
    Code :
    1
    2
    
    String s1 = "abc";
    String s2 = s1 + "/SXYZ";

    Liefert mir im Debugger (und in der originalen Anwendungslogik) den String "abcSXYZ"

    Code :
    1
    2
    
    String s1 = "abc";
    String s2 = s1 + "/" +"SXYZ";

    Liefert erst das erwartete Ergebnis "abc/SXYZ"

    Hat da jemand eine Erklärung dafür ?

    Gruß
    McD
    Geändert von mcdroemmel (10.02.11 um 13:57 Uhr)
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    dein Problem hat mit Java nichts zu tun ist daher in diesem Unterforum falsch.
    Java != Javascript

    @Moderator: Bitte verschieben

    Hier kann ich dir leider nicht weiterhelfen, kenne mich mit Javascript nicht so gut aus.

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    mcdroemmel mcdroemmel ist offline Mitglied Bronze
    Registriert seit
    Mar 2009
    Beiträge
    26
    Wieso gehst du von JavaScript aus?

    Das ist schon pure Java (JRE 5) wovon ich rede..!
    Allerdings ist die Virtual Maschine nicht von Sun sondern von SAP (SAP Netweaver 7.1 Application Server)

    McD
     

  4. #4
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    hat die Bratkartoffel vermutlich wegen dem "var" so erkannt. Zugegeben, ich hätte das auch als JavaScript-Code abgestempelt. "Normales" Java ist das aber wohl kaum.
    Unter Java würde der Code so aussehen:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    
    String s1 = "abc";
    String s2 = s1 + "/SXYZ";
    String s3 = s1 + "/" +"SXYZ";
     
    // zum Testen:
    System.out.println(s2);
    System.out.println(s3);
    und die Ausgabe
    Code :
    1
    2
    
    abc/SXYZ
    abc/SXYZ
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  5. #5
    SE Tutorials.de Gastzugang
    ich gehe hier auch eher von ner verschmelzung von java und javascript aus da das ganze ja laut namen ein application server sein soll ...
    was mich hier nut grundlegend stört ist das es Java 5 ist ...

    wann kam Java 6 Final raus ? ... vor nem jahr oder sowas ? ... also wer noch mit 5 oder sogar 1.4 arbeitet sollte sich so langsam mal echt für n update entscheiden ... zu mal java 7 schon im prerelease is ...
     

  6. #6
    mcdroemmel mcdroemmel ist offline Mitglied Bronze
    Registriert seit
    Mar 2009
    Beiträge
    26
    Boh Leute,

    Sorry. Das mit dem var muss natürlich nicht sein, kommt wohl daher weil ich sonst auch noch Javascript entwickle. Hab ich dann auch mal korrigiert.

    @gnodeftest
    Bis auf das var statt String ist dein Code doch prinzipiell das gleiche in Grün wie meiner.
    Ich hatte ihn nur nicht so "schön" gemacht weil er schlicht kein nicht der Original-Code aus meiner Anwendung ist sondern ich nur das Problem veranschaulichen wollte.
    Ausserdem hab ich das im Debugger gesehen, weil System.out.println() auf einem App-Server nicht unbedingt gemacht wird. Da arbeite ich mit der Logger-Klasse. Damit wollte ich das Beispiel aber nicht zusätzlich aufblähen.


    @SPiKEe
    Der Code wo mir das passiert ist läuft auf einem JE55-Server der SAP AG. Zwischen JDK 1.4 (und damit auch JEE2) liegen aus meiner Sicht Welten. Zwischen Java5 (und damit JEE5 im App-Server-Umfeld) und Java6 gibts natürlich auch Unterschiede, aber aus meiner bescheidenen Sicht nicht so krasse wie vorher.
    Ausserdem ist es bei Business-Anwendungen nicht unbedingt usus (und auch schlicht nicht immer machbar) immer gleich auf den neuesten Zug zu springen der vorbei fährt.
    Jedenfalls ist der Java-App-Server der SAP noch JEE5 basierend. Auch das aktuelle (und sogar das kommende) Release basieren auf JEE5 (JEE5).

    Leider muss ich aber feststellen, dass substantiell meine eigentliche Frage bisher nicht beantwortet wurde.

    Grüße
    McD
     

  7. #7
    SE Tutorials.de Gastzugang
    ja gut schön und toll ...
    aber ich glaube keiner hier wird sich freiwillig v5EE ziehen nur um den bug zu bestätigen ...
    aber das is wieder mal typischer kapitalismus ... anstatt sich n unternehmen mal n paar euro kosten lässt um ne eigene software zu entwickeln rennen sie alle gleich zu SAP und bezahlen sich dumm und dämlich ...
    in diesem fall kann ich nur sagen : frag nicht in öffentlichen foren was da kaputt is sonder mal den SAP-JEE5 support dierekt ... weil scheinbar dort die ursache liegt
    und wenn du so viel mit JS proggst und dann in java code JS schlüsselwörter benutzt dann wundere dich nich das dich alle gleich abschieben mit der zeile : java != javascript ... also bist du an unseren reaktionen auf deinen vermeintlichen JS code selbst schuld ... *layer-8*

    btw : der einfache normale schrägstrich heißt einfach nur SLASH
    und der umgedrehte einfach BACKSLASH ... wäre schön wenn du dierekte fachwörter nutzt und nich wie n anfänger drumrum redest ...
     

  8. #8
    mcdroemmel mcdroemmel ist offline Mitglied Bronze
    Registriert seit
    Mar 2009
    Beiträge
    26
    @SPiKEe
    Was machst du hier so ein Fass auf? Bist du unterzuckert? Du kennst mich überhaupt nicht und hast keine Ahnung von dem was ich tue und was ich bin. Dennoch scheint es dir was zu bringen mich blöd anzumachen. Leider mal wieder ein typischer Fall von Foren-Profilierung.
    Was hat das mit Kapitalismus zu tun das wir SAP-Software einsetzen. Auch da kennst du doch keinen Grund warum wir die Software von denen einsetzen. Ist für uns absolut die beste Entscheidung gewesen (obwohl ich selbst kein SAP und erst Recht kein Abap-Freund bin).

    Ehrlich gesagt fand ich das Phänomen eher interessant und wollte mal fragen ob jemanden das auch schon mal vor die Flinte gekommen ist. Nicht mehr und nicht weniger. Würde von keinem erwarten sich da ne alte JRE zu ziehen und das jetzt zu testen. Also locker bleiben.

    Und falls du mal in der englischen Literatur nachschlägst oder googelst, wird sehr wohl zwecks der eindeutigen Unterscheidung oftmals vom Forward-Slash gesprochen weil es genug Leute gibt die Slash auch mit Backslash gleichsetzen (obwohl natürlich Slash allein als Bezeichnug auch korrekt ist, damit ist meine Konkretisierung aber nicht falsch).

    Für mich ist das Thema erst mal erledigt.
     

  9. #9
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    508
    @spikee Dir empfehle ich mal die Netiquette, vor allem Punkt 15 und 16

    Das mit dem Slash ist mir noch nie untergekommen. Eventuell wird der String auf eine Weise weiterverarbeitet, in dem /S ein bestimmtes Muster ist, z.B. ein Flag? Ich glaube da das vollkommen aus dem Kontext gerissen ist, kann man hier kaum was dazu sagen... Wie genodeftest es schon schrieb: Es sollte so auf jeden Fall funktionieren.
     

  10. #10
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    meiner Erfahrung nach (und ein paar kleine Tests eben) bestätigen, was Tim Bureck meint. So was ist mir auch noch nicht unter gekommen.

    Versuche aber mal das ganze mit nem StringBuilder zu machen, taucht hier das Problem auch auf?

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  11. #11
    SE Tutorials.de Gastzugang
    den teil-string "/S" als flag ist eher unwahrscheinlich da das "S" ja noch im string ist ... lediglich der slash verschwindet ... das dieser als einzelnes zeichen ein flag sein könnte ... möglich ... nur das er dann in der ausführlichen schreibweise dann plötzlich doch da ist spricht wieder dagegen ... is halt schon echt n merkwürder bug ...
     

  12. #12
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    An deiner Stelle würde ich einen einfachen Test bauen, der das nachstellt und mal schauen welches Java verwendet wird. Vielleicht benutzt ihr eine exotische JVM, vlt eine die kommerziell ist, welches einen Bug beinhaltet? (Ansonsten kann ich mir das auch nicht erklären)

    P.S.ie J2EE-Version hat afaik nichts mit der Java-Version miteinander zutun. Ich benutze hier auch einen J2EE 5 Server mit Java 6. J2EE ist erst einmal ja nur eine Schnittstellenbeschreibung, welche dann von Applikationsserver implementiert werden.
     
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

Ähnliche Themen

  1. Java String in Java Code?
    Von DerKoenig im Forum Java
    Antworten: 5
    Letzter Beitrag: 20.01.11, 13:23
  2. Antworten: 0
    Letzter Beitrag: 22.08.07, 11:29
  3. Slash anfügen
    Von Freak_Desperado im Forum Hosting & Webserver
    Antworten: 4
    Letzter Beitrag: 12.04.07, 19:20
  4. mod_rewrite und Trailing-Slash Problem
    Von Chino im Forum Hosting & Webserver
    Antworten: 0
    Letzter Beitrag: 01.06.04, 15:51
  5. Slash und PHP?
    Von Arndtinho im Forum PHP
    Antworten: 9
    Letzter Beitrag: 04.12.03, 11:45