Cheaper: array1[i] = i ;

Hallo,

hab gerade mit Java angefangen und mal ff ausprobiert:

public class MyClass {

/**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub

int a = 5;
  int[] array1 = new int[5] ;{

for ( int i = 0; i < array1.length; i++ ) {

System.out.println(i);
           array1[i] = i ;

}

System.out.println(array1);
  System.out.println(a);

}

Die Ausgabe ist nun: 0
                     1
                     2
                     3
                     4
                     [I@10b62c9 //statt 01234
                     5

Warum denn?ß

Cheaper

  1. Hi,

    int[] array1 = new int[5] ;
      System.out.println(array1);

    [I@10b62c9 //statt 01234

    Weil array1 ein Array ([) von int (I) ist und sich an der Speicheradresse 10b62c9 (@10b62c9) befindet.

    Wie kommst Du auf die Idee, daß in Java die Ausgabe einer Referenz auf int[] die aneinandergereihten Array-Werte sein könnten?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi,

      Weil array1 ein Array ([) von int (I) ist und sich an der Speicheradresse 10b62c9 (@10b62c9) befindet.

      Also sollte es so aussehen:

      int a = 5;
        int[] array1 = new int[5] ;{

      for ( short i = 0; i < array1.length; i++ ) {

      array1[i] = i ;
                 System.out.println(array1[i]);
        }

      ???

      Wie kann ich denn mit einem Befehl alle Werte des Arrays ausgeben??

      Cheaper

      1. Hi,

        Wie kann ich denn mit einem Befehl alle Werte des Arrays ausgeben??

        Wieso meinst Du, daß dies mit einem einzigen Befehl möglich wäre/sein müßte?

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Wieso meinst Du, daß dies mit einem einzigen Befehl möglich wäre/sein müßte?

          fänd ich nur logisch und einfach...
          Statt jeden Wert einzeln ausgeben zu lassen einfach einmal sagen alle Werte ausgeben...
          Wär doch was gutes ^^

          Cheaper

          1. Hi,

            Wieso meinst Du, daß dies mit einem einzigen Befehl möglich wäre/sein müßte?
            fänd ich nur logisch und einfach...

            Du findest es logisch, dass ein Befehl für einen Spezialfall existiert, der neben vielen anderen gleichberechtigt existiert und zudem reichlich trivial implementiert werden kann? Also, bei mir fällt das eher in die Kategorie "absurd".

            Statt jeden Wert einzeln ausgeben zu lassen einfach einmal sagen alle Werte ausgeben...

            Ähm, dieser Befehl würde ebenfalls alles einzeln ausgeben lassen.

            Wär doch was gutes ^^

            Dann programmier's Dir doch einfach.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Du findest es logisch, dass ein Befehl für einen Spezialfall existiert, der neben vielen anderen gleichberechtigt existiert und zudem reichlich trivial implementiert werden kann? Also, bei mir fällt das eher in die Kategorie "absurd".

              warum sollte so ein befehl nicht gleichberechtigt neben vielen anderen existieren??

              Ähm, dieser Befehl würde ebenfalls alles einzeln ausgeben lassen.

              Trotzdem würde es den Quelltext kürzer machen..

              Dann programmier's Dir doch einfach.

              Wie gesagt ich habe gerade seit ca. 2 std angefangen mich mit java zu beschäftigen...^^

              Cheaper

              1. Hi,

                warum sollte so ein befehl nicht gleichberechtigt neben vielen anderen existieren??

                weil es Unfug ist, Massen von Methoden prophylaktisch vorzuhalten.

                Ähm, dieser Befehl würde ebenfalls alles einzeln ausgeben lassen.
                Trotzdem würde es den Quelltext kürzer machen..

                Um Gottfrieds Willen. Wenn's hoch kommt, ist das ein Fünfzeiler.

                Dann programmier's Dir doch einfach.
                Wie gesagt ich habe gerade seit ca. 2 std angefangen mich mit java zu beschäftigen...^^

                Kein Grund, undurchschaubare Schnittstellen zu verlangen.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hallo,

                  warum sollte so ein befehl nicht gleichberechtigt neben vielen anderen existieren??

                  weil es Unfug ist, Massen von Methoden prophylaktisch vorzuhalten.

                  Wir reden hier von toString(). Die Methode als solche existiert
                  bereits. Für Arrays ist die ohnhin irgendwie in die VM reingewurschtelt.
                  Eine Standardimplementierung für die primitiven Datentypen und Object
                  wäre hilfreich.
                  Über java.lang.Arrays läßt sich eine Ausgabe jedoch leicht erreichen,
                  so daß sich der Bedarf bei mir zumindest zwischenzeitlich in Grenzen
                  hält.

                  Trotzdem würde es den Quelltext kürzer machen..

                  Um Gottfrieds Willen. Wenn's hoch kommt, ist das ein Fünfzeiler.

                  Ein Einzeiler, wie ich bereits postete.
                  (Bei einer Eigenimplementierung hast du recht.)

                  Kein Grund, undurchschaubare Schnittstellen zu verlangen.

                  Die Methode toString() existiert, wie du als Java-Entwickler (IIRC)
                  sicherlich weißt, bereits in jedem Objekt. Die Schnittstelle ist daher
                  bereits vollständig vorhanden.

                  Gruß
                  Slyh

                  1. Hi,

                    weil es Unfug ist, Massen von Methoden prophylaktisch vorzuhalten.
                    Wir reden hier von toString().

                    wir reden von 18 (oder 37) verschiedenen toString()s, nicht von einem einzigen. Warum sollte die toString()-Methode eines zentralen Objekttypus ausgerechnet die Ausgabe besitzen, die der OP gerne hätte? Sie ist in fast allen Fällen nicht das, was gewünscht sein wird, da sich die einzelnen Elemente nicht identifizieren lassen. Selbst ein toString(String separator) wäre zweckentfremdet, weil dies eine absolut unübliche Schnittstelle wäre.

                    Eine Standardimplementierung für die primitiven Datentypen und Object
                    wäre hilfreich.

                    Ja, aber bitte eine andere, als hier gewünscht wurde :-)

                    Über java.lang.Arrays läßt sich eine Ausgabe jedoch leicht erreichen,

                    Es existieren bereits jetzt leichte Wege, alle Array-Elemente zu einem String zusammenzufügen, das stimmt.

                    Trotzdem würde es den Quelltext kürzer machen..
                    Um Gottfrieds Willen. Wenn's hoch kommt, ist das ein Fünfzeiler.
                    Ein Einzeiler, wie ich bereits postete.
                    (Bei einer Eigenimplementierung hast du recht.)

                    Eben. Wenn's hoch kommt :-)

                    Die Methode toString() existiert, wie du als Java-Entwickler (IIRC)

                    Naja, im Moment müsstest Du an hinreichend sinnvoller Stelle ein "Ex" hinzufügen.

                    sicherlich weißt, bereits in jedem Objekt. Die Schnittstelle ist daher
                    bereits vollständig vorhanden.

                    Die Schnittstelle ist nicht vollständig vorhanden, da Array.toString() ein anderes Ergebnis als gefordert liefert. Die Interface-Definition reicht eben nicht immer aus ;-)

                    Cheatah

                    --
                    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
                    1. Hi,

                      Die Methode toString() existiert, wie du als Java-Entwickler (IIRC)
                      Naja, im Moment müsstest Du an hinreichend sinnvoller Stelle ein "Ex" hinzufügen.

                      ExIIRC? Du kannst Dich nicht mehr dran erinnern? ;-)

                      cu,
                      Andreas

                      --
                      Warum nennt sich Andreas hier MudGuard?
                      O o ostern ...
                      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            2. Hallo,

              Du findest es logisch, dass ein Befehl für einen Spezialfall existiert, der neben vielen anderen gleichberechtigt existiert und zudem reichlich trivial implementiert werden kann? Also, bei mir fällt das eher in die Kategorie "absurd".

              Du meinst also dass PHP komplett absurd ist? *scnr*

              Jeena

              1. Hi,

                Du meinst also dass PHP komplett absurd ist? *scnr*

                und ich habe mir einen derartigen Kommentar extra noch verkniffen ... :-)

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
        2. Hallo,

          Wie kann ich denn mit einem Befehl alle Werte des Arrays ausgeben??

          Wieso meinst Du, daß dies mit einem einzigen Befehl möglich wäre/sein müßte?

          Ist es doch quasi...

          System.out.println(Arrays.toString(array1));
          (Das geht seit Java 5.)

          Vor Java 5 geht das über einen kleinen Umweg:
          System.out.println(Arrays.asList(array1));

          Im Übrigen ist mir auch nicht wirklich klar, wieso die toString()-Methode
          von Arrays nicht überschrieben ist, um eine bessere Ausgabe ohne Aufwand
          erreichen zu können..

          Und, anders als hier im Thread gesagt, liefert die toString()-Methode
          von Object nicht etwa eine Speicheradresse, sondern den HashCode des
          Objekts im Hex-Format zurück.

          Gruß
          Slyh

  2. Was ist denn hier falsch??

    public class FirstTry {
     /**
      * @param args
      */
     public static void main(String[] args) {
      // TODO Auto-generated method stub

    long l = 123456789L;
      int i = 54321;
      println( l + i);

    }

    }

    Cheaper

    1. Habs schon danke