Fragen zu Java datentypen + import-funktion

Hey,

ich bin ganz neu in Java-Programmierung (steig jetzt von PHP auf Java um) . Ich habe bei vielen java-codes (auch hier im forum) so import zeilen ober der class gesehen welche ja irgendwas einbindet/importiert.

Woher weiß ich was ich importieren soll ? Was kann man denn alles importieren ? Gibts da eine Doku wo es drinsteht ?

Ich habe jetzt das erste mal von datentypen wie long, double, char gehört.
Wann soll ich denn die einsetzten ?

So ist ja der Class-Aufbau nach erstellung einer class in eclipse:

class Application
{
  public static void main( String[] args )
  {
   
  }
}

Dazu hab ich ne frage. Gibt es in Java keine funktionen die man dann aufruft ? Und was soll den in den klammern () String[] args bedeuten ?
Das args ein array ist welcher vom datentyp string ist ?

Kann mann auch z.b. ohne ** public static void main( String[] args ){}** beginnen ?

Also z.b. so:

public class datentypen {

       

       public static void main(){
    	   
    	   String Treibstoff = "Super Plus";
           System.out.print(Treibstoff);

         }

      

		}

Kann man in Java auch eine funktion mit dem Pfeil -> ausführen ?

Gruß,
Stef

Viele sehr elementare Fragen, die früher oder später in den entsprechenden Tutorials beantwortet werden würden. Aber kurz:

Vielleicht sollte man erwähnen, dass beim importieren nicht wirklich „etwas passiert“. Also, es ist NICHT so, dass damit irgendwas irgendwo hin kopiert wird. Es ist vielmehr ein Hinweis darauf, was man in dieser Klasse alles verwendet. Die allgemeine Struktur von Java, dass Classes in Packages liegen, hast du vielleicht schon mitbekommen.

Und wenn man jetzt in seinem Programm z.B. einen JFrame erstellen will (also ein Fenster - eine GUI-Komponente), dann schreibt man eben

import javax.swing.JFrame;

class Application
{
  public static void main( String[] args )
  {
     JFrame frame = ...;
  }
}

Man KANN auch ganz ohne imports arbeiten, indem man immer den „voll qualifizierten“ Namen angibt, der aus Packagename und Klassenname besteht:

class Application
{
  public static void main( String[] args )
  {
     javax.swing.JFrame frame = ...;
  }
}

Aber das macht man selten. Eigentlich nur, wenn man Namenskonflikte auflösen muss.
(BTW: Klassen aus dem package java.lang muss man dort nicht explizit aufführen)

Die Frage klingt … überraschend, wenn man es nicht anders kennt. „Ja…äh…wenn du sie brauchst?!“ wäre schon fast eine akzeptable Antwort :wink: Java ist eben (wie etwa C, C++ und viele andere) eine stark getypte Sprache. D.h. ALLE Variablen haben einen bestimmten Typ. Wo man in anderen Sprachen sowas schreiben kann wie


var value = 32;
value = "Hallo";
value = 1.234;

geht das in Java eben nicht - man muss den Typ verwenden, den diese Variable haben soll. Wenn man z.B. etwas hat, was immer eine ganze Zahl sein soll, dann nimmt man meistens „int“:


int value = 32;
value = "Hallo"; // Geht nicht: "Hallo" ist keine ganze Zahl
value = 1.234; // Geht nicht: 1.234 ist keine ganze Zahl

Doch. Die kann man selbst definieren, oder vorderfinierte Funktionen aus einer Klasse verwenden…

class Application
{
  public static void main( String[] args )
  {
      int x = meineFunktion(); // x ist jetzt 42

      double y = Math.sqrt(x); // y ist jetzt die Wurzel aus 42
  }

  private static int meineFunktion() 
  {  
     return 42;
  }
}

Genau. Da stehen die Kommandozeilenargumente drin, die beim Start des Programms angegeben wurden. (Wenn keine angegeben wurden, ist der Array leer - d.h. args.length ist dann 0)

Nein. Die main ist DER eine definierte Einstiegspunkt, wo alles anfängt, wenn man das Programm mit
java MeinProgramm
started (oder den „Run“-Button in der IDE klickt). Der ist immer gleich.

Da ist nicht ganz klar, worauf sich das bezieht. Vielleicht würde ein PHP-Beispiel mit Erklärung helfen. Oder jemand kennt PHP, und weiß, was damit gemeint ist…

Hallo,
willkommen hier im Forum.
Ich antworte mal als erster (brauche noch einen Beitrag^^), aber auch nur zu dem Teil mit den imports.
Falls es um “Programmtext” von mir geht, ich lasse die imports meisten weg, weil IDEs (also Eclipse bei dir) diese einfügen.
Ansonsten, was sind imports (woanders z. B. includes), siehe Hinweise, FAQs, was man beachten sollte, usw., UND: https://docs.oracle.com/javase/7/docs/api/ ,
das ist erst mal viel, das ist erst mal unübersichtlich, aber alles benötigt man anfangs nich…
Ich hoffe, ich konnte da etwas zu den imports helfen. HTH,
Grüße

Edit:

Sieht vermutlich nach dem Dereferenzierungsoperator in C++ aus.

Edit 2: Dereferenzierung heißt nicht in C++, habe da etwas verwechselt.

Der Pfeil in PHP ist in Java der Punkt.
Beispiel:

$myObject->foo();

wäre in Java
myObject.foo();

Hey,

Aso ok. Vielen Dank an alle für die schnelle Hilfe :slight_smile:

Zu den datentypen:

double - dieses verwendet man ja bei variable, die fließkommazahlen/ganzzahlen als Wert haben ?
long - verwendet man nur bei ganzzahlen, jedoch mit höherer bit-anzahl als int.

Ist denn die Bit-Größe eines datentypes entscheidend wichtig ?

Braucht man eigentlich den datentyp char ? Aus meiner Sicht ist der doch unnötig, denn Zeichen kann ich doch auch in ein String schreiben.

@Marco13 :

Ich meinte mit funktionen, nicht das was du meintest. In PHP war z.b. der aufbau :


class Auto{
      
      private $oTreibstoff;

          public function tanken{
               //usw.....
          }
}

Ich meinte die public function. In java ist der Aufbau z.b nur so wenn man kein rückgabewert erwartet: public static void MeineFunktion(){}. Wenn man einen erwartet dann muss man ja void entfernen.

Zu dem hier :** public static void main( String[] args ){}**

Wenn ich jetzt variablen einfüge die ich z.b. später in weiteren funktionen verwende, dann muss ja alles in diese funktion da rein. Denn es wird ja nur das aufgerufen was dort in dieser „main“-funktion drin steht ?

@CyborgBeta : Die Doku sieht entwas unübersichtlich aus. Aber danke für den Linktipp. Habe die doku nicht gefunden davor…

Gruß,
Stef

Joa, und ein String enthält eben intern einen char-Array. Man braucht ihn “selten”, eben wenn man irgendwas mit Stringverarbeitung machen und dabei einzelne Buchstaben handhaben will (und da weiß man eben: Das ist nur EIN char - das spart viele if (string.length()==1) yetItIsASingleCharacter(); :D)

Falls da noch eine Frage war, hab’ ich sie nicht erkannt - könnte aber damit zu tun haben:

[QUOTE=Stef;143917]
Wenn ich jetzt variablen einfüge die ich z.b. später in weiteren funktionen verwende, dann muss ja alles in diese funktion da rein. Denn es wird ja nur das aufgerufen was dort in dieser “main”-funktion drin steht ?[/QUOTE]

Nein, die “main” ist nur der Einstiegspunkt. Dort erstellt man dann Objekte, und ruft darauf Methoden auf. Aber das geht jetzt in Richtung der Frage “Was ist objektorientierte Programmierung?”, und das haben andere an anderen Stellen schon viel besser beschrieben, als ich es jetzt hier (um diese Zeit) könnte.

Das was du da in PHP erwähnst, geht in Java ganz ähnlich:

[quote=Stef]Ich meinte mit funktionen, nicht das was du meintest. In PHP war z.b. der aufbau :

    class Auto{
         
          private $oTreibstoff;
     
              public function tanken{
                   //usw.....
              }
    }

Ich meinte die public function.[/quote]


    private double treibstoffInLitern;
    private double gefahreneKilometer;

    public Auto() {
        treibstoffInLitern = 0.0;
        gefahreneKilometer= 0.0;
    }
     
    public void tanken(double getankteLiter) {
        treibstoffInLitern += getankteLiter;
        // Was wenn der Tank überläuft?
    }

    public void fahre(double strecke) {
        if (strecke < 0) {
            // ...
        }
        gefahreneKilometer += strecke;
    }

    public double getGefahreneKilometer() {
        return gefahreneKilometer;
    }

}```


Ist das das, was du meinst?

Hi,

@Marco13 : Aso ok. Also Char ist dann sozusagen ein Buchstabe/Wert ? Mit der Frage wollte ich fragen ob man alle variablen in die “main”-funktion reinschreiben muss, oder ob man diese auch außerhalb setzen kann.

@Crian : Ja genau sowas meinte ich. Zu deinem Java-Beispiel: Wenn man jetzt z.b. eine methode ausgeben möchte muss man diese ja dann in die main-funktion (public static void main( String[] args ){}) ausgeben lassen. Anders würde es dann ein Error geben ?

Gruß,
Stef

Natürlich kann man die auch außerhalb setzen (wie übrigens auch in PHP-Klassen), nur sind es dann eben Instanzvariablen oder statische Variablen der Klasse.

Ich glaube, so wie du an die Sache rangehst kann das nur in Verwirrung enden. Es hilft einfach nichts, im Nebel herumzustochern und ein paar isolierte Fragen beantwortet zu bekommen, du musst dir einfach die Zeit nehmen, die Grundlagen durchzukauen. Ist erst mal öde, aber wenn du das überspringst, wirst du immer wieder in irgendwelche Fallen tappen.

Vielleicht nicht die ideale Einführung, aber deutsch und für lau: Rheinwerk Computing :: Java ist auch eine Insel - index

Oder mal in unserer Fundgrube stöbern, da stehen einige Tutorials drin: https://forum.byte-welt.net/sonstiges/byte-welt-fundgrube/

Hey,

aso ok. Ja da hast du voll recht. Ich habe nur mal so gefragt weil es mich mal intressiert hat. Ich werde aufjedenfall die Grundlagen gut durchgehen und lernen. Denn ohne die Grundlagen zu kennen und beherschen kann man die sprache nicht beherrschen…
Danke für die Linktipps. Wusste garnicht, dass es kostenlose bücher im internet gibt. Werde da aufjedenfall mal reinschauen. Und bei der Fundgrube habe ich jetzt auch was sehr gutes, aus meiner sicht, gefunden. Was auch die Grundlagen gut erklärt.

Stef

Nicht zu verachten ist auch dieses Tutorial:
Java Tutorial interaktiv - Programmieren lernen mit Java

Ich hab es aber selber noch nicht durchgearbeitet, geht mir nicht in die Breite genug.

Zu der Frage mit dem char. Ein char ist ein Datentyp und ein Zeichen/Buchstabe, hat bestimmten Wertebereich, benötigt bestimmte Anzahl an Bits usw.
Es gibt noch viele andere (primitive) Datentypen.
Dann geht’s weiter mit Variablen, dann Funktionen, Methoden, Klassen, Objekte, (Vererbung), Konstanten, Aggregation, Komposition usw.
Dabei ist wichtig, und das hatte ich vor ein paar Tagen mal aus Schludrigkeit falsch gemacht, objektorientiert zu DENKEN.

Bei konkreteren Fragen einfach ein neues Thema aufmachen, imho.
Der Weg zum Java-Profi ist lang und überall lauern mittelgroße Felsbrocken…

Nur ganz kurz, ohne alles gelesen zu haben, das → aus php ist . in java…

achso, hat rudolph schon gesagt :slight_smile: sorry ^^